﻿2026-06-21T04:47:53.4774216Z ##[group]Run ./traceable-reqs check --json
2026-06-21T04:47:53.4775294Z [36;1m./traceable-reqs check --json[0m
2026-06-21T04:47:53.4789660Z shell: /usr/bin/bash -e {0}
2026-06-21T04:47:53.4790475Z ##[endgroup]
2026-06-21T04:47:53.5479338Z {
2026-06-21T04:47:53.5481050Z   "schemaVersion": 1,
2026-06-21T04:47:53.5482309Z   "summary": {
2026-06-21T04:47:53.5483491Z     "requirementCount": 275,
2026-06-21T04:47:53.5484840Z     "completeCount": 275,
2026-06-21T04:47:53.5486106Z     "incompleteCount": 0,
2026-06-21T04:47:53.5487146Z     "findingCount": 0
2026-06-21T04:47:53.5488106Z   },
2026-06-21T04:47:53.5489050Z   "requirements": [
2026-06-21T04:47:53.5490004Z     {
2026-06-21T04:47:53.5491266Z       "id": "REQ-API-1",
2026-06-21T04:47:53.5492721Z       "title": "api prefix and adapter_name on every machinery invocation",
2026-06-21T04:47:53.5494376Z       "requiredStages": [
2026-06-21T04:47:53.5495443Z         "impl",
2026-06-21T04:47:53.5496361Z         "unit",
2026-06-21T04:47:53.5497271Z         "int"
2026-06-21T04:47:53.5498207Z       ],
2026-06-21T04:47:53.5499142Z       "stages": {
2026-06-21T04:47:53.5500053Z         "doc": {
2026-06-21T04:47:53.5501015Z           "complete": false,
2026-06-21T04:47:53.5502132Z           "evidence": []
2026-06-21T04:47:53.5503169Z         },
2026-06-21T04:47:53.5504059Z         "impl": {
2026-06-21T04:47:53.5505037Z           "complete": true,
2026-06-21T04:47:53.5506111Z           "evidence": [
2026-06-21T04:47:53.5507121Z             {
2026-06-21T04:47:53.5508156Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T04:47:53.5509607Z               "line": 15
2026-06-21T04:47:53.5510471Z             }
2026-06-21T04:47:53.5511423Z           ]
2026-06-21T04:47:53.5512324Z         },
2026-06-21T04:47:53.5513220Z         "int": {
2026-06-21T04:47:53.5514194Z           "complete": true,
2026-06-21T04:47:53.5515306Z           "evidence": [
2026-06-21T04:47:53.5516336Z             {
2026-06-21T04:47:53.5517472Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T04:47:53.5518625Z               "line": 13
2026-06-21T04:47:53.5519452Z             }
2026-06-21T04:47:53.5520111Z           ]
2026-06-21T04:47:53.5520750Z         },
2026-06-21T04:47:53.5521394Z         "unit": {
2026-06-21T04:47:53.5522089Z           "complete": true,
2026-06-21T04:47:53.5522874Z           "evidence": [
2026-06-21T04:47:53.5523606Z             {
2026-06-21T04:47:53.5524350Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T04:47:53.5525318Z               "line": 717
2026-06-21T04:47:53.5526061Z             },
2026-06-21T04:47:53.5526720Z             {
2026-06-21T04:47:53.5527450Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T04:47:53.5528438Z               "line": 804
2026-06-21T04:47:53.5529233Z             }
2026-06-21T04:47:53.5529912Z           ]
2026-06-21T04:47:53.5530551Z         }
2026-06-21T04:47:53.5531180Z       }
2026-06-21T04:47:53.5531805Z     },
2026-06-21T04:47:53.5532434Z     {
2026-06-21T04:47:53.5533268Z       "id": "REQ-API-2",
2026-06-21T04:47:53.5535000Z       "title": "The api subcommand surface (bind/listen/poll/state/worker/boundary/...)",
2026-06-21T04:47:53.5536931Z       "requiredStages": [
2026-06-21T04:47:53.5538030Z         "impl",
2026-06-21T04:47:53.5539088Z         "unit",
2026-06-21T04:47:53.5540032Z         "int"
2026-06-21T04:47:53.5540963Z       ],
2026-06-21T04:47:53.5541861Z       "stages": {
2026-06-21T04:47:53.5542834Z         "doc": {
2026-06-21T04:47:53.5543828Z           "complete": false,
2026-06-21T04:47:53.5544972Z           "evidence": []
2026-06-21T04:47:53.5546038Z         },
2026-06-21T04:47:53.5546954Z         "impl": {
2026-06-21T04:47:53.5547964Z           "complete": true,
2026-06-21T04:47:53.5549182Z           "evidence": [
2026-06-21T04:47:53.5550230Z             {
2026-06-21T04:47:53.5551342Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T04:47:53.5552759Z               "line": 17
2026-06-21T04:47:53.5553840Z             },
2026-06-21T04:47:53.5554789Z             {
2026-06-21T04:47:53.5556235Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T04:47:53.5557360Z               "line": 20
2026-06-21T04:47:53.5558100Z             },
2026-06-21T04:47:53.5558766Z             {
2026-06-21T04:47:53.5560175Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T04:47:53.5561469Z               "line": 142
2026-06-21T04:47:53.5562580Z             },
2026-06-21T04:47:53.5563534Z             {
2026-06-21T04:47:53.5564653Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:53.5566098Z               "line": 24
2026-06-21T04:47:53.5567144Z             },
2026-06-21T04:47:53.5568088Z             {
2026-06-21T04:47:53.5569576Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:53.5571045Z               "line": 41
2026-06-21T04:47:53.5572138Z             },
2026-06-21T04:47:53.5573125Z             {
2026-06-21T04:47:53.5574162Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:53.5575171Z               "line": 213
2026-06-21T04:47:53.5575937Z             },
2026-06-21T04:47:53.5576610Z             {
2026-06-21T04:47:53.5577404Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:53.5578571Z               "line": 255
2026-06-21T04:47:53.5579711Z             },
2026-06-21T04:47:53.5580380Z             {
2026-06-21T04:47:53.5581348Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:53.5582448Z               "line": 334
2026-06-21T04:47:53.5583195Z             },
2026-06-21T04:47:53.5583867Z             {
2026-06-21T04:47:53.5584669Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:53.5585668Z               "line": 397
2026-06-21T04:47:53.5586441Z             },
2026-06-21T04:47:53.5587184Z             {
2026-06-21T04:47:53.5588039Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:53.5589370Z               "line": 436
2026-06-21T04:47:53.5590243Z             },
2026-06-21T04:47:53.5590959Z             {
2026-06-21T04:47:53.5591780Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T04:47:53.5592781Z               "line": 17
2026-06-21T04:47:53.5593592Z             },
2026-06-21T04:47:53.5594299Z             {
2026-06-21T04:47:53.5595161Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T04:47:53.5596142Z               "line": 30
2026-06-21T04:47:53.5596906Z             },
2026-06-21T04:47:53.5597568Z             {
2026-06-21T04:47:53.5598337Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T04:47:53.5599421Z               "line": 63
2026-06-21T04:47:53.5600168Z             },
2026-06-21T04:47:53.5600835Z             {
2026-06-21T04:47:53.5601614Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T04:47:53.5602587Z               "line": 77
2026-06-21T04:47:53.5603337Z             }
2026-06-21T04:47:53.5603977Z           ]
2026-06-21T04:47:53.5604601Z         },
2026-06-21T04:47:53.5605222Z         "int": {
2026-06-21T04:47:53.5605922Z           "complete": true,
2026-06-21T04:47:53.5606721Z           "evidence": [
2026-06-21T04:47:53.5607447Z             {
2026-06-21T04:47:53.5608247Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T04:47:53.5609331Z               "line": 14
2026-06-21T04:47:53.5610075Z             },
2026-06-21T04:47:53.5610738Z             {
2026-06-21T04:47:53.5611528Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T04:47:53.5612523Z               "line": 187
2026-06-21T04:47:53.5613276Z             }
2026-06-21T04:47:53.5613934Z           ]
2026-06-21T04:47:53.5614566Z         },
2026-06-21T04:47:53.5615204Z         "unit": {
2026-06-21T04:47:53.5615924Z           "complete": true,
2026-06-21T04:47:53.5616726Z           "evidence": [
2026-06-21T04:47:53.5617444Z             {
2026-06-21T04:47:53.5618231Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T04:47:53.5619288Z               "line": 82
2026-06-21T04:47:53.5620011Z             },
2026-06-21T04:47:53.5620894Z             {
2026-06-21T04:47:53.5621989Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T04:47:53.5623141Z               "line": 279
2026-06-21T04:47:53.5623979Z             },
2026-06-21T04:47:53.5624727Z             {
2026-06-21T04:47:53.5625640Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:53.5626722Z               "line": 709
2026-06-21T04:47:53.5627532Z             },
2026-06-21T04:47:53.5628324Z             {
2026-06-21T04:47:53.5629292Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:53.5630442Z               "line": 720
2026-06-21T04:47:53.5631281Z             },
2026-06-21T04:47:53.5631997Z             {
2026-06-21T04:47:53.5633067Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:53.5671279Z               "line": 873
2026-06-21T04:47:53.5672127Z             },
2026-06-21T04:47:53.5672807Z             {
2026-06-21T04:47:53.5673579Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:53.5674537Z               "line": 919
2026-06-21T04:47:53.5675278Z             },
2026-06-21T04:47:53.5675899Z             {
2026-06-21T04:47:53.5676642Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T04:47:53.5677556Z               "line": 143
2026-06-21T04:47:53.5678270Z             },
2026-06-21T04:47:53.5678894Z             {
2026-06-21T04:47:53.5679705Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T04:47:53.5680633Z               "line": 187
2026-06-21T04:47:53.5681330Z             }
2026-06-21T04:47:53.5681940Z           ]
2026-06-21T04:47:53.5682553Z         }
2026-06-21T04:47:53.5683157Z       }
2026-06-21T04:47:53.5683734Z     },
2026-06-21T04:47:53.5684330Z     {
2026-06-21T04:47:53.5684941Z       "id": "REQ-API-3",
2026-06-21T04:47:53.5685857Z       "title": "commune/signoff are file-drops, not commands",
2026-06-21T04:47:53.5686930Z       "requiredStages": [
2026-06-21T04:47:53.5687650Z         "impl",
2026-06-21T04:47:53.5688285Z         "unit",
2026-06-21T04:47:53.5688929Z         "int"
2026-06-21T04:47:53.5689640Z       ],
2026-06-21T04:47:53.5690251Z       "stages": {
2026-06-21T04:47:53.5690902Z         "doc": {
2026-06-21T04:47:53.5691571Z           "complete": false,
2026-06-21T04:47:53.5692342Z           "evidence": []
2026-06-21T04:47:53.5693042Z         },
2026-06-21T04:47:53.5693646Z         "impl": {
2026-06-21T04:47:53.5694313Z           "complete": true,
2026-06-21T04:47:53.5695052Z           "evidence": [
2026-06-21T04:47:53.5695755Z             {
2026-06-21T04:47:53.5696490Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T04:47:53.5697428Z               "line": 27
2026-06-21T04:47:53.5698143Z             },
2026-06-21T04:47:53.5698784Z             {
2026-06-21T04:47:53.5699609Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:53.5700577Z               "line": 566
2026-06-21T04:47:53.5701287Z             }
2026-06-21T04:47:53.5701897Z           ]
2026-06-21T04:47:53.5702488Z         },
2026-06-21T04:47:53.5703090Z         "int": {
2026-06-21T04:47:53.5703764Z           "complete": true,
2026-06-21T04:47:53.5704492Z           "evidence": [
2026-06-21T04:47:53.5705174Z             {
2026-06-21T04:47:53.5705913Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T04:47:53.5706872Z               "line": 261
2026-06-21T04:47:53.5707555Z             }
2026-06-21T04:47:53.5708169Z           ]
2026-06-21T04:47:53.5708756Z         },
2026-06-21T04:47:53.5709434Z         "unit": {
2026-06-21T04:47:53.5710102Z           "complete": true,
2026-06-21T04:47:53.5710842Z           "evidence": [
2026-06-21T04:47:53.5711514Z             {
2026-06-21T04:47:53.5712238Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T04:47:53.5713182Z               "line": 280
2026-06-21T04:47:53.5713873Z             },
2026-06-21T04:47:53.5714494Z             {
2026-06-21T04:47:53.5715243Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:53.5716192Z               "line": 948
2026-06-21T04:47:53.5716889Z             }
2026-06-21T04:47:53.5717742Z           ]
2026-06-21T04:47:53.5718338Z         }
2026-06-21T04:47:53.5718920Z       }
2026-06-21T04:47:53.5719568Z     },
2026-06-21T04:47:53.5720153Z     {
2026-06-21T04:47:53.5720744Z       "id": "REQ-API-4",
2026-06-21T04:47:53.5726379Z       "title": "api resolves the adapter manifest (+ profile + install dir) from `--adapter name:profile` via the registry when `--manifest` is omitted; `--manifest` becomes an optional OVERRIDE (unregistered / local-dev manifests). Removes the require-both-flags redundancy — a registered adapter's live bringup / digest / capability needs only `--adapter` — and yields the precise install dir (the record's source_dir) rather than the --manifest parent, closing the copy-mode psyche-binary edge (v0.8.0)",
2026-06-21T04:47:53.5731939Z       "requiredStages": [
2026-06-21T04:47:53.5732662Z         "doc",
2026-06-21T04:47:53.5733273Z         "impl",
2026-06-21T04:47:53.5733901Z         "unit"
2026-06-21T04:47:53.5734512Z       ],
2026-06-21T04:47:53.5735124Z       "stages": {
2026-06-21T04:47:53.5735767Z         "doc": {
2026-06-21T04:47:53.5736421Z           "complete": true,
2026-06-21T04:47:53.5737155Z           "evidence": [
2026-06-21T04:47:53.5737826Z             {
2026-06-21T04:47:53.5738477Z               "path": "CONTEXT.md",
2026-06-21T04:47:53.5739350Z               "line": 149
2026-06-21T04:47:53.5740036Z             }
2026-06-21T04:47:53.5740638Z           ]
2026-06-21T04:47:53.5741225Z         },
2026-06-21T04:47:53.5741816Z         "impl": {
2026-06-21T04:47:53.5742480Z           "complete": true,
2026-06-21T04:47:53.5743289Z           "evidence": [
2026-06-21T04:47:53.5743965Z             {
2026-06-21T04:47:53.5744681Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T04:47:53.5745577Z               "line": 484
2026-06-21T04:47:53.5746275Z             }
2026-06-21T04:47:53.5746879Z           ]
2026-06-21T04:47:53.5747476Z         },
2026-06-21T04:47:53.5748072Z         "int": {
2026-06-21T04:47:53.5748725Z           "complete": false,
2026-06-21T04:47:53.5749609Z           "evidence": []
2026-06-21T04:47:53.5750306Z         },
2026-06-21T04:47:53.5750906Z         "unit": {
2026-06-21T04:47:53.5751566Z           "complete": true,
2026-06-21T04:47:53.5752304Z           "evidence": [
2026-06-21T04:47:53.5752981Z             {
2026-06-21T04:47:53.5753684Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T04:47:53.5754592Z               "line": 657
2026-06-21T04:47:53.5755289Z             },
2026-06-21T04:47:53.5755905Z             {
2026-06-21T04:47:53.5756599Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T04:47:53.5757508Z               "line": 681
2026-06-21T04:47:53.5758218Z             },
2026-06-21T04:47:53.5758834Z             {
2026-06-21T04:47:53.5759635Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T04:47:53.5760541Z               "line": 705
2026-06-21T04:47:53.5761242Z             }
2026-06-21T04:47:53.5761856Z           ]
2026-06-21T04:47:53.5762450Z         }
2026-06-21T04:47:53.5763051Z       }
2026-06-21T04:47:53.5763624Z     },
2026-06-21T04:47:53.5764206Z     {
2026-06-21T04:47:53.5764818Z       "id": "REQ-ARCH-1",
2026-06-21T04:47:53.5765677Z       "title": "Many small acyclically-layered crates",
2026-06-21T04:47:53.5766650Z       "requiredStages": [
2026-06-21T04:47:53.5767365Z         "impl"
2026-06-21T04:47:53.5767986Z       ],
2026-06-21T04:47:53.5768591Z       "stages": {
2026-06-21T04:47:53.5769298Z         "doc": {
2026-06-21T04:47:53.5769964Z           "complete": false,
2026-06-21T04:47:53.5770740Z           "evidence": []
2026-06-21T04:47:53.5771440Z         },
2026-06-21T04:47:53.5772045Z         "impl": {
2026-06-21T04:47:53.5772724Z           "complete": true,
2026-06-21T04:47:53.5773472Z           "evidence": [
2026-06-21T04:47:53.5774146Z             {
2026-06-21T04:47:53.5774856Z               "path": "crates/spt-msg/src/lib.rs",
2026-06-21T04:47:53.5775761Z               "line": 18
2026-06-21T04:47:53.5776462Z             },
2026-06-21T04:47:53.5777210Z             {
2026-06-21T04:47:53.5777945Z               "path": "crates/spt-proto/src/lib.rs",
2026-06-21T04:47:53.5778870Z               "line": 12
2026-06-21T04:47:53.5779686Z             },
2026-06-21T04:47:53.5780297Z             {
2026-06-21T04:47:53.5781022Z               "path": "crates/spt-store/src/lib.rs",
2026-06-21T04:47:53.5781952Z               "line": 12
2026-06-21T04:47:53.5782653Z             }
2026-06-21T04:47:53.5783270Z           ]
2026-06-21T04:47:53.5783862Z         },
2026-06-21T04:47:53.5784457Z         "int": {
2026-06-21T04:47:53.5785129Z           "complete": false,
2026-06-21T04:47:53.5785886Z           "evidence": []
2026-06-21T04:47:53.5786717Z         },
2026-06-21T04:47:53.5787332Z         "unit": {
2026-06-21T04:47:53.5788018Z           "complete": false,
2026-06-21T04:47:53.5788787Z           "evidence": []
2026-06-21T04:47:53.5789841Z         }
2026-06-21T04:47:53.5790438Z       }
2026-06-21T04:47:53.5791013Z     },
2026-06-21T04:47:53.5791601Z     {
2026-06-21T04:47:53.5792222Z       "id": "REQ-ARCH-2",
2026-06-21T04:47:53.5793223Z       "title": "Public SDK surface is spt-proto, spt-runtime, spt-msg",
2026-06-21T04:47:53.5794374Z       "requiredStages": [
2026-06-21T04:47:53.5795113Z         "impl"
2026-06-21T04:47:53.5795747Z       ],
2026-06-21T04:47:53.5796342Z       "stages": {
2026-06-21T04:47:53.5796996Z         "doc": {
2026-06-21T04:47:53.5797668Z           "complete": false,
2026-06-21T04:47:53.5798440Z           "evidence": []
2026-06-21T04:47:53.5799215Z         },
2026-06-21T04:47:53.5799834Z         "impl": {
2026-06-21T04:47:53.5800506Z           "complete": true,
2026-06-21T04:47:53.5801249Z           "evidence": [
2026-06-21T04:47:53.5801947Z             {
2026-06-21T04:47:53.5802687Z               "path": "crates/spt-runtime/src/lib.rs",
2026-06-21T04:47:53.5803588Z               "line": 18
2026-06-21T04:47:53.5804278Z             }
2026-06-21T04:47:53.5804897Z           ]
2026-06-21T04:47:53.5805487Z         },
2026-06-21T04:47:53.5806078Z         "int": {
2026-06-21T04:47:53.5806761Z           "complete": false,
2026-06-21T04:47:53.5807522Z           "evidence": []
2026-06-21T04:47:53.5808218Z         },
2026-06-21T04:47:53.5808819Z         "unit": {
2026-06-21T04:47:53.5809559Z           "complete": false,
2026-06-21T04:47:53.5810314Z           "evidence": []
2026-06-21T04:47:53.5811019Z         }
2026-06-21T04:47:53.5811601Z       }
2026-06-21T04:47:53.5812185Z     },
2026-06-21T04:47:53.5812769Z     {
2026-06-21T04:47:53.5813385Z       "id": "REQ-ARCH-3",
2026-06-21T04:47:53.5814525Z       "title": "Wire-protocol version independent of crate semver, N-1 compat window",
2026-06-21T04:47:53.5815804Z       "requiredStages": [
2026-06-21T04:47:53.5816524Z         "impl",
2026-06-21T04:47:53.5817148Z         "unit"
2026-06-21T04:47:53.5817769Z       ],
2026-06-21T04:47:53.5818373Z       "stages": {
2026-06-21T04:47:53.5819098Z         "doc": {
2026-06-21T04:47:53.5819779Z           "complete": false,
2026-06-21T04:47:53.5820529Z           "evidence": []
2026-06-21T04:47:53.5821259Z         },
2026-06-21T04:47:53.5821866Z         "impl": {
2026-06-21T04:47:53.5822542Z           "complete": true,
2026-06-21T04:47:53.5823273Z           "evidence": [
2026-06-21T04:47:53.5823964Z             {
2026-06-21T04:47:53.5824723Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T04:47:53.5825658Z               "line": 34
2026-06-21T04:47:53.5826369Z             },
2026-06-21T04:47:53.5826999Z             {
2026-06-21T04:47:53.5827756Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T04:47:53.5828700Z               "line": 41
2026-06-21T04:47:53.5829472Z             }
2026-06-21T04:47:53.5830078Z           ]
2026-06-21T04:47:53.5830675Z         },
2026-06-21T04:47:53.5831285Z         "int": {
2026-06-21T04:47:53.5831952Z           "complete": false,
2026-06-21T04:47:53.5832712Z           "evidence": []
2026-06-21T04:47:53.5833406Z         },
2026-06-21T04:47:53.5834010Z         "unit": {
2026-06-21T04:47:53.5834672Z           "complete": true,
2026-06-21T04:47:53.5835735Z           "evidence": [
2026-06-21T04:47:53.5836423Z             {
2026-06-21T04:47:53.5837163Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T04:47:53.5838107Z               "line": 51
2026-06-21T04:47:53.5838806Z             },
2026-06-21T04:47:53.5839508Z             {
2026-06-21T04:47:53.5840261Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T04:47:53.5841182Z               "line": 71
2026-06-21T04:47:53.5841883Z             },
2026-06-21T04:47:53.5842489Z             {
2026-06-21T04:47:53.5843301Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T04:47:53.5844241Z               "line": 83
2026-06-21T04:47:53.5845060Z             }
2026-06-21T04:47:53.5845690Z           ]
2026-06-21T04:47:53.5846285Z         }
2026-06-21T04:47:53.5846865Z       }
2026-06-21T04:47:53.5847442Z     },
2026-06-21T04:47:53.5848028Z     {
2026-06-21T04:47:53.5848638Z       "id": "REQ-ARCH-4",
2026-06-21T04:47:53.5849749Z       "title": "Copy-verbatim the commodity layer from the sister project",
2026-06-21T04:47:53.5850912Z       "requiredStages": [
2026-06-21T04:47:53.5851630Z         "impl",
2026-06-21T04:47:53.5852263Z         "unit"
2026-06-21T04:47:53.5852902Z       ],
2026-06-21T04:47:53.5853561Z       "stages": {
2026-06-21T04:47:53.5854223Z         "doc": {
2026-06-21T04:47:53.5854902Z           "complete": false,
2026-06-21T04:47:53.5855668Z           "evidence": []
2026-06-21T04:47:53.5856385Z         },
2026-06-21T04:47:53.5856998Z         "impl": {
2026-06-21T04:47:53.5857663Z           "complete": true,
2026-06-21T04:47:53.5858397Z           "evidence": [
2026-06-21T04:47:53.5859146Z             {
2026-06-21T04:47:53.5859888Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T04:47:53.5860809Z               "line": 165
2026-06-21T04:47:53.5861521Z             },
2026-06-21T04:47:53.5862143Z             {
2026-06-21T04:47:53.5862875Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T04:47:53.5863810Z               "line": 188
2026-06-21T04:47:53.5864515Z             },
2026-06-21T04:47:53.5865138Z             {
2026-06-21T04:47:53.5865870Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T04:47:53.5866796Z               "line": 208
2026-06-21T04:47:53.5867496Z             },
2026-06-21T04:47:53.5868103Z             {
2026-06-21T04:47:53.5868824Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T04:47:53.5869851Z               "line": 223
2026-06-21T04:47:53.5888442Z             },
2026-06-21T04:47:53.5889243Z             {
2026-06-21T04:47:53.5889992Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T04:47:53.5890971Z               "line": 273
2026-06-21T04:47:53.5891690Z             }
2026-06-21T04:47:53.5892304Z           ]
2026-06-21T04:47:53.5892901Z         },
2026-06-21T04:47:53.5893501Z         "int": {
2026-06-21T04:47:53.5894179Z           "complete": false,
2026-06-21T04:47:53.5894951Z           "evidence": []
2026-06-21T04:47:53.5895643Z         },
2026-06-21T04:47:53.5896248Z         "unit": {
2026-06-21T04:47:53.5896903Z           "complete": true,
2026-06-21T04:47:53.5897642Z           "evidence": [
2026-06-21T04:47:53.5898320Z             {
2026-06-21T04:47:53.5899119Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T04:47:53.5900057Z               "line": 334
2026-06-21T04:47:53.5900776Z             },
2026-06-21T04:47:53.5901396Z             {
2026-06-21T04:47:53.5902134Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T04:47:53.5903059Z               "line": 344
2026-06-21T04:47:53.5903756Z             },
2026-06-21T04:47:53.5904369Z             {
2026-06-21T04:47:53.5905121Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T04:47:53.5906046Z               "line": 355
2026-06-21T04:47:53.5906750Z             },
2026-06-21T04:47:53.5907364Z             {
2026-06-21T04:47:53.5908087Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T04:47:53.5909079Z               "line": 366
2026-06-21T04:47:53.5909992Z             },
2026-06-21T04:47:53.5910603Z             {
2026-06-21T04:47:53.5911326Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T04:47:53.5912257Z               "line": 378
2026-06-21T04:47:53.5912966Z             },
2026-06-21T04:47:53.5913571Z             {
2026-06-21T04:47:53.5914293Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T04:47:53.5915203Z               "line": 391
2026-06-21T04:47:53.5915905Z             },
2026-06-21T04:47:53.5916525Z             {
2026-06-21T04:47:53.5917246Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T04:47:53.5918166Z               "line": 402
2026-06-21T04:47:53.5919082Z             },
2026-06-21T04:47:53.5919712Z             {
2026-06-21T04:47:53.5920426Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T04:47:53.5921354Z               "line": 419
2026-06-21T04:47:53.5922054Z             },
2026-06-21T04:47:53.5922670Z             {
2026-06-21T04:47:53.5923412Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T04:47:53.5924342Z               "line": 547
2026-06-21T04:47:53.5925032Z             }
2026-06-21T04:47:53.5925645Z           ]
2026-06-21T04:47:53.5926236Z         }
2026-06-21T04:47:53.5926818Z       }
2026-06-21T04:47:53.5927405Z     },
2026-06-21T04:47:53.5927991Z     {
2026-06-21T04:47:53.5928588Z       "id": "REQ-CLI-1",
2026-06-21T04:47:53.5933029Z       "title": "spt endpoint noun namespace: absorbs fork/suspend/wake/shutdown/rename/stop/digest + access (ported 1:1: allow|revoke|open|list, decision 21) + description (ex-resources blurb; bare=show, set=author); merged endpoint list [--local|--subnet <name>] grouped by subnet with SELF pinned, --detail adding the ex-resources yellow-pages blurb projection; bare spt endpoint = the list (M8 decisions 1-2, 25)",
2026-06-21T04:47:53.5948277Z       "requiredStages": [
2026-06-21T04:47:53.5949169Z         "impl",
2026-06-21T04:47:53.5949813Z         "unit"
2026-06-21T04:47:53.5950423Z       ],
2026-06-21T04:47:53.5951048Z       "stages": {
2026-06-21T04:47:53.5951702Z         "doc": {
2026-06-21T04:47:53.5952371Z           "complete": false,
2026-06-21T04:47:53.5953119Z           "evidence": []
2026-06-21T04:47:53.5953816Z         },
2026-06-21T04:47:53.5954393Z         "impl": {
2026-06-21T04:47:53.5955060Z           "complete": true,
2026-06-21T04:47:53.5955797Z           "evidence": [
2026-06-21T04:47:53.5956465Z             {
2026-06-21T04:47:53.5957141Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.5958016Z               "line": 225
2026-06-21T04:47:53.5958707Z             },
2026-06-21T04:47:53.5959405Z             {
2026-06-21T04:47:53.5960104Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.5960974Z               "line": 1093
2026-06-21T04:47:53.5961667Z             },
2026-06-21T04:47:53.5962272Z             {
2026-06-21T04:47:53.5962950Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.5963826Z               "line": 1720
2026-06-21T04:47:53.5964519Z             },
2026-06-21T04:47:53.5965129Z             {
2026-06-21T04:47:53.5965810Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.5966682Z               "line": 3124
2026-06-21T04:47:53.5967383Z             }
2026-06-21T04:47:53.5967985Z           ]
2026-06-21T04:47:53.5968567Z         },
2026-06-21T04:47:53.5969225Z         "int": {
2026-06-21T04:47:53.5969893Z           "complete": false,
2026-06-21T04:47:53.5970640Z           "evidence": []
2026-06-21T04:47:53.5971316Z         },
2026-06-21T04:47:53.5971902Z         "unit": {
2026-06-21T04:47:53.5972547Z           "complete": true,
2026-06-21T04:47:53.5973273Z           "evidence": [
2026-06-21T04:47:53.5973949Z             {
2026-06-21T04:47:53.5974626Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.5975490Z               "line": 7947
2026-06-21T04:47:53.5976176Z             }
2026-06-21T04:47:53.5976771Z           ]
2026-06-21T04:47:53.5977348Z         }
2026-06-21T04:47:53.5977920Z       }
2026-06-21T04:47:53.5978660Z     },
2026-06-21T04:47:53.5979337Z     {
2026-06-21T04:47:53.5979924Z       "id": "REQ-CLI-2",
2026-06-21T04:47:53.5982915Z       "title": "spt daemon noun: run|stop|status (hidden daemon verb becomes daemon run; agent-endpoint shutdown keeps its name under endpoint); daemon status renders the pump heartbeat (last-tick recency) so a half-dead daemon is never rendered implied-healthy (M8 decisions 5, 23)",
2026-06-21T04:47:53.5985979Z       "requiredStages": [
2026-06-21T04:47:53.5986678Z         "impl",
2026-06-21T04:47:53.5987298Z         "unit"
2026-06-21T04:47:53.5987899Z       ],
2026-06-21T04:47:53.5988475Z       "stages": {
2026-06-21T04:47:53.5989330Z         "doc": {
2026-06-21T04:47:53.5989979Z           "complete": false,
2026-06-21T04:47:53.5990727Z           "evidence": []
2026-06-21T04:47:53.5991400Z         },
2026-06-21T04:47:53.5991991Z         "impl": {
2026-06-21T04:47:53.5992635Z           "complete": true,
2026-06-21T04:47:53.5993366Z           "evidence": [
2026-06-21T04:47:53.5994034Z             {
2026-06-21T04:47:53.5994769Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.5995689Z               "line": 414
2026-06-21T04:47:53.5996375Z             },
2026-06-21T04:47:53.5996990Z             {
2026-06-21T04:47:53.5997714Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T04:47:53.5998654Z               "line": 97
2026-06-21T04:47:53.5999415Z             },
2026-06-21T04:47:53.6000014Z             {
2026-06-21T04:47:53.6000749Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T04:47:53.6001665Z               "line": 256
2026-06-21T04:47:53.6002344Z             },
2026-06-21T04:47:53.6002953Z             {
2026-06-21T04:47:53.6003621Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6004479Z               "line": 434
2026-06-21T04:47:53.6005176Z             },
2026-06-21T04:47:53.6005786Z             {
2026-06-21T04:47:53.6006474Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6007350Z               "line": 1174
2026-06-21T04:47:53.6008041Z             },
2026-06-21T04:47:53.6008646Z             {
2026-06-21T04:47:53.6009386Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6010254Z               "line": 1958
2026-06-21T04:47:53.6010947Z             },
2026-06-21T04:47:53.6011551Z             {
2026-06-21T04:47:53.6012221Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6013083Z               "line": 2047
2026-06-21T04:47:53.6013775Z             },
2026-06-21T04:47:53.6014380Z             {
2026-06-21T04:47:53.6015053Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6015927Z               "line": 2108
2026-06-21T04:47:53.6016618Z             }
2026-06-21T04:47:53.6017223Z           ]
2026-06-21T04:47:53.6017805Z         },
2026-06-21T04:47:53.6018392Z         "int": {
2026-06-21T04:47:53.6019116Z           "complete": false,
2026-06-21T04:47:53.6019855Z           "evidence": []
2026-06-21T04:47:53.6020531Z         },
2026-06-21T04:47:53.6021124Z         "unit": {
2026-06-21T04:47:53.6021763Z           "complete": true,
2026-06-21T04:47:53.6022485Z           "evidence": [
2026-06-21T04:47:53.6023162Z             {
2026-06-21T04:47:53.6023897Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T04:47:53.6024817Z               "line": 338
2026-06-21T04:47:53.6025489Z             },
2026-06-21T04:47:53.6026097Z             {
2026-06-21T04:47:53.6026765Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6027628Z               "line": 8102
2026-06-21T04:47:53.6028309Z             }
2026-06-21T04:47:53.6028914Z           ]
2026-06-21T04:47:53.6029572Z         }
2026-06-21T04:47:53.6030144Z       }
2026-06-21T04:47:53.6030706Z     },
2026-06-21T04:47:53.6031275Z     {
2026-06-21T04:47:53.6031857Z       "id": "REQ-CLI-3",
2026-06-21T04:47:53.6034861Z       "title": "Agent hot path stays flat across the M8 reorg: send/ring/ready/whoami/how-to unchanged; notify moves to subnet notify while notif stays top-level; breaking renames land clean with no deprecation shims (zero external CLI consumers pre-spt-claude-code) (M8 decisions 3-4, 9)",
2026-06-21T04:47:53.6038062Z       "requiredStages": [
2026-06-21T04:47:53.6038770Z         "impl",
2026-06-21T04:47:53.6039459Z         "unit"
2026-06-21T04:47:53.6040070Z       ],
2026-06-21T04:47:53.6040651Z       "stages": {
2026-06-21T04:47:53.6041266Z         "doc": {
2026-06-21T04:47:53.6041915Z           "complete": false,
2026-06-21T04:47:53.6042651Z           "evidence": []
2026-06-21T04:47:53.6043389Z         },
2026-06-21T04:47:53.6043972Z         "impl": {
2026-06-21T04:47:53.6044623Z           "complete": true,
2026-06-21T04:47:53.6045494Z           "evidence": [
2026-06-21T04:47:53.6046153Z             {
2026-06-21T04:47:53.6046825Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6047678Z               "line": 1087
2026-06-21T04:47:53.6048366Z             }
2026-06-21T04:47:53.6049020Z           ]
2026-06-21T04:47:53.6049586Z         },
2026-06-21T04:47:53.6050176Z         "int": {
2026-06-21T04:47:53.6050820Z           "complete": false,
2026-06-21T04:47:53.6051565Z           "evidence": []
2026-06-21T04:47:53.6052230Z         },
2026-06-21T04:47:53.6052814Z         "unit": {
2026-06-21T04:47:53.6053444Z           "complete": true,
2026-06-21T04:47:53.6054165Z           "evidence": [
2026-06-21T04:47:53.6054809Z             {
2026-06-21T04:47:53.6055482Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6056340Z               "line": 7912
2026-06-21T04:47:53.6057037Z             }
2026-06-21T04:47:53.6057631Z           ]
2026-06-21T04:47:53.6058205Z         }
2026-06-21T04:47:53.6058778Z       }
2026-06-21T04:47:53.6059422Z     },
2026-06-21T04:47:53.6059971Z     {
2026-06-21T04:47:53.6060551Z       "id": "REQ-CLI-4",
2026-06-21T04:47:53.6067844Z       "title": "User-facing CLI output is human-readable: DIRECT-USER commands (e.g. adapter update/list/use) render friendly prose instead of raw CODE:RESULT markers — \"claude-spt is up to date (0.2.0).\" not \"ADAPTER_UPDATE_UPTODATE:claude-spt: installed 0.2.0, latest 0.2.0\". Strictly bounded to the direct-user surface: the adapter-PARSED bringup tokens (SEEDED/BOUND/READY/NO_SEED on seed/listen, which adapters grep) stay machine-parseable — humanization is additive (a human line beside the marker, or a --porcelain/--quiet split), never a silent rename of a dual-contract marker. The user-facing bringup composition belongs to the adapter (perri); this REQ owns only the direct-user CLI surface. (v0.9.0)",
2026-06-21T04:47:53.6074840Z       "requiredStages": [],
2026-06-21T04:47:53.6075572Z       "stages": {
2026-06-21T04:47:53.6076194Z         "doc": {
2026-06-21T04:47:53.6076869Z           "complete": false,
2026-06-21T04:47:53.6077603Z           "evidence": []
2026-06-21T04:47:53.6078289Z         },
2026-06-21T04:47:53.6078875Z         "impl": {
2026-06-21T04:47:53.6079607Z           "complete": true,
2026-06-21T04:47:53.6080332Z           "evidence": [
2026-06-21T04:47:53.6081005Z             {
2026-06-21T04:47:53.6081686Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6082543Z               "line": 5678
2026-06-21T04:47:53.6083236Z             }
2026-06-21T04:47:53.6083825Z           ]
2026-06-21T04:47:53.6084395Z         },
2026-06-21T04:47:53.6084977Z         "int": {
2026-06-21T04:47:53.6085616Z           "complete": false,
2026-06-21T04:47:53.6086346Z           "evidence": []
2026-06-21T04:47:53.6087018Z         },
2026-06-21T04:47:53.6087596Z         "unit": {
2026-06-21T04:47:53.6088231Z           "complete": false,
2026-06-21T04:47:53.6089047Z           "evidence": []
2026-06-21T04:47:53.6089710Z         }
2026-06-21T04:47:53.6090287Z       }
2026-06-21T04:47:53.6090844Z     },
2026-06-21T04:47:53.6091411Z     {
2026-06-21T04:47:53.6092027Z       "id": "REQ-CLI-HELP-MARKDOWN",
2026-06-21T04:47:53.6102020Z       "title": "`spt --help` (and every subcommand --help) renders the inline Markdown authored in the clap doc-comments as terminal styling, never as literal markers: `**bold**` → ANSI bold, `` `code` `` → ANSI cyan, `[text](url)` → `text`. The markers are STRIPPED either way — a raw `**` or backtick must NEVER reach the user (the operator-reported v0.12.0 defect: help text reads `**ctrl-b**` and stray backticks verbatim). Color/bold escapes are emitted ONLY when the help is going to a real terminal AND color is not suppressed (NO_COLOR unset · CLICOLOR != 0 · CLICOLOR_FORCE forces on); a pipe / redirect / CI / NO_COLOR falls back to strip-only (clean plaintext, zero escapes) so machine-readable help is byte-identical regardless of marker syntax. Pure transform over the clap-rendered help string at the single run()/bare_invocation chokepoint; preserves pre-existing ANSI (CSI sequences passed through untouched), never spans markers across a newline, leaves unmatched/empty markers literal, and does not alter the help layout. (v0.12.1)",
2026-06-21T04:47:53.6112313Z       "requiredStages": [
2026-06-21T04:47:53.6113001Z         "impl",
2026-06-21T04:47:53.6113637Z         "unit"
2026-06-21T04:47:53.6114238Z       ],
2026-06-21T04:47:53.6114815Z       "stages": {
2026-06-21T04:47:53.6115434Z         "doc": {
2026-06-21T04:47:53.6116070Z           "complete": false,
2026-06-21T04:47:53.6116800Z           "evidence": []
2026-06-21T04:47:53.6117468Z         },
2026-06-21T04:47:53.6118050Z         "impl": {
2026-06-21T04:47:53.6118685Z           "complete": true,
2026-06-21T04:47:53.6119482Z           "evidence": [
2026-06-21T04:47:53.6120135Z             {
2026-06-21T04:47:53.6120817Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T04:47:53.6121682Z               "line": 8
2026-06-21T04:47:53.6122330Z             },
2026-06-21T04:47:53.6122941Z             {
2026-06-21T04:47:53.6123623Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T04:47:53.6124493Z               "line": 51
2026-06-21T04:47:53.6125166Z             },
2026-06-21T04:47:53.6125767Z             {
2026-06-21T04:47:53.6126455Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T04:47:53.6127326Z               "line": 82
2026-06-21T04:47:53.6127985Z             },
2026-06-21T04:47:53.6128586Z             {
2026-06-21T04:47:53.6129331Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T04:47:53.6130203Z               "line": 229
2026-06-21T04:47:53.6130876Z             }
2026-06-21T04:47:53.6131471Z           ]
2026-06-21T04:47:53.6132046Z         },
2026-06-21T04:47:53.6132618Z         "int": {
2026-06-21T04:47:53.6133262Z           "complete": false,
2026-06-21T04:47:53.6133986Z           "evidence": []
2026-06-21T04:47:53.6134658Z         },
2026-06-21T04:47:53.6135235Z         "unit": {
2026-06-21T04:47:53.6135869Z           "complete": true,
2026-06-21T04:47:53.6136573Z           "evidence": [
2026-06-21T04:47:53.6137224Z             {
2026-06-21T04:47:53.6137891Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T04:47:53.6138745Z               "line": 249
2026-06-21T04:47:53.6139488Z             },
2026-06-21T04:47:53.6140086Z             {
2026-06-21T04:47:53.6140763Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T04:47:53.6141626Z               "line": 256
2026-06-21T04:47:53.6142291Z             },
2026-06-21T04:47:53.6142887Z             {
2026-06-21T04:47:53.6143616Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T04:47:53.6144470Z               "line": 263
2026-06-21T04:47:53.6145138Z             },
2026-06-21T04:47:53.6145719Z             {
2026-06-21T04:47:53.6146396Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T04:47:53.6147248Z               "line": 270
2026-06-21T04:47:53.6147923Z             },
2026-06-21T04:47:53.6148509Z             {
2026-06-21T04:47:53.6149273Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T04:47:53.6150134Z               "line": 297
2026-06-21T04:47:53.6150810Z             },
2026-06-21T04:47:53.6151405Z             {
2026-06-21T04:47:53.6152078Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T04:47:53.6152956Z               "line": 307
2026-06-21T04:47:53.6153748Z             },
2026-06-21T04:47:53.6154340Z             {
2026-06-21T04:47:53.6155017Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T04:47:53.6155892Z               "line": 317
2026-06-21T04:47:53.6156571Z             },
2026-06-21T04:47:53.6157171Z             {
2026-06-21T04:47:53.6157851Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T04:47:53.6158711Z               "line": 331
2026-06-21T04:47:53.6159475Z             },
2026-06-21T04:47:53.6160082Z             {
2026-06-21T04:47:53.6160780Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T04:47:53.6161699Z               "line": 340
2026-06-21T04:47:53.6162532Z             },
2026-06-21T04:47:53.6163132Z             {
2026-06-21T04:47:53.6163807Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T04:47:53.6164670Z               "line": 348
2026-06-21T04:47:53.6165342Z             }
2026-06-21T04:47:53.6165934Z           ]
2026-06-21T04:47:53.6166501Z         }
2026-06-21T04:47:53.6167073Z       }
2026-06-21T04:47:53.6167616Z     },
2026-06-21T04:47:53.6168165Z     {
2026-06-21T04:47:53.6168801Z       "id": "REQ-CLI-OUTPUT-MARKDOWN",
2026-06-21T04:47:53.6186801Z       "title": "Human-prose COMMAND OUTPUT (not just `--help`) renders the inline Markdown authored in its source strings as terminal styling, never literal markers: `` `code` `` → ANSI cyan, `**bold**` → ANSI bold, `[text](url)` → `text`, markers STRIPPED either way. REQ-CLI-HELP-MARKDOWN only hooked the clap `--help` chokepoint, so command output still printed raw Markdown (audit: `spt how-to` topic text showed `# headers`/backticks, `spt subnet`/`subnet status` hint footers showed stray backticks, the daemon-status `not running` line, the `ENDPOINT_RUN_STARTED` attach hint, and the daemon's `SUBNET_DETACHED` startup line — 13 prose surfaces). The same line-bounded pure `helpfmt::render` is applied at each emit site, color-gated by the OUTPUT STREAM's own tty (`stdout_color` for print/println, the new `stderr_color` for eprintln). HARNESS-SAFETY (binding): color is tty-gated, so an adapter (piped / non-tty / NO_COLOR) gets STRIP mode = zero ANSI + markers removed; every dual-contract MACHINE token on a rendered line (`ENDPOINT_RUN_STARTED:`, `NO_SUCH_TOPIC:`, `SUBNET_DETACHED:`) carries NO Markdown markers, so it survives strip byte-intact — the adapter parse is never perturbed. Pure-machine output (the `<EVENT …>` envelope, bringup parse-tokens SEEDED/BOUND/READY/NO_SEED, `--json`, QR) is NEVER routed through the renderer. The one spt-daemon source string (`SUBNET_DETACHED`, the bin-local renderer is unreachable from the daemon crate) is authored marker-free instead. (v0.12.2)",
2026-06-21T04:47:53.6200528Z       "requiredStages": [
2026-06-21T04:47:53.6201228Z         "impl",
2026-06-21T04:47:53.6201840Z         "unit"
2026-06-21T04:47:53.6202439Z       ],
2026-06-21T04:47:53.6203011Z       "stages": {
2026-06-21T04:47:53.6203634Z         "doc": {
2026-06-21T04:47:53.6204274Z           "complete": false,
2026-06-21T04:47:53.6205001Z           "evidence": []
2026-06-21T04:47:53.6205666Z         },
2026-06-21T04:47:53.6206248Z         "impl": {
2026-06-21T04:47:53.6206882Z           "complete": true,
2026-06-21T04:47:53.6207602Z           "evidence": [
2026-06-21T04:47:53.6208250Z             {
2026-06-21T04:47:53.6209028Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.6209923Z               "line": 141
2026-06-21T04:47:53.6210589Z             },
2026-06-21T04:47:53.6211193Z             {
2026-06-21T04:47:53.6211851Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6212694Z               "line": 1376
2026-06-21T04:47:53.6213366Z             },
2026-06-21T04:47:53.6213970Z             {
2026-06-21T04:47:53.6214651Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6215510Z               "line": 2145
2026-06-21T04:47:53.6216189Z             },
2026-06-21T04:47:53.6216790Z             {
2026-06-21T04:47:53.6217461Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6218457Z               "line": 4368
2026-06-21T04:47:53.6219224Z             },
2026-06-21T04:47:53.6219806Z             {
2026-06-21T04:47:53.6220483Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6221325Z               "line": 4466
2026-06-21T04:47:53.6222001Z             },
2026-06-21T04:47:53.6222597Z             {
2026-06-21T04:47:53.6223250Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6224093Z               "line": 5257
2026-06-21T04:47:53.6224779Z             },
2026-06-21T04:47:53.6225370Z             {
2026-06-21T04:47:53.6226057Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T04:47:53.6227060Z               "line": 39
2026-06-21T04:47:53.6227741Z             }
2026-06-21T04:47:53.6228355Z           ]
2026-06-21T04:47:53.6228924Z         },
2026-06-21T04:47:53.6229651Z         "int": {
2026-06-21T04:47:53.6230277Z           "complete": false,
2026-06-21T04:47:53.6230996Z           "evidence": []
2026-06-21T04:47:53.6231662Z         },
2026-06-21T04:47:53.6232256Z         "unit": {
2026-06-21T04:47:53.6232890Z           "complete": true,
2026-06-21T04:47:53.6233605Z           "evidence": [
2026-06-21T04:47:53.6234250Z             {
2026-06-21T04:47:53.6234908Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6235744Z               "line": 10272
2026-06-21T04:47:53.6236435Z             },
2026-06-21T04:47:53.6237034Z             {
2026-06-21T04:47:53.6237718Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T04:47:53.6238577Z               "line": 281
2026-06-21T04:47:53.6239335Z             },
2026-06-21T04:47:53.6239930Z             {
2026-06-21T04:47:53.6240612Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T04:47:53.6241489Z               "line": 358
2026-06-21T04:47:53.6242161Z             },
2026-06-21T04:47:53.6300448Z             {
2026-06-21T04:47:53.6301347Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T04:47:53.6302257Z               "line": 381
2026-06-21T04:47:53.6303098Z             },
2026-06-21T04:47:53.6303715Z             {
2026-06-21T04:47:53.6304388Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T04:47:53.6305260Z               "line": 395
2026-06-21T04:47:53.6305938Z             }
2026-06-21T04:47:53.6306539Z           ]
2026-06-21T04:47:53.6307112Z         }
2026-06-21T04:47:53.6307684Z       }
2026-06-21T04:47:53.6308229Z     },
2026-06-21T04:47:53.6308791Z     {
2026-06-21T04:47:53.6309464Z       "id": "REQ-CONSENT-1",
2026-06-21T04:47:53.6313033Z       "title": "Consent grant store: capability x subject-agent x target-node rows, enforced at the target node, subnet-settable (replicates as security material near the trust store), revocable; gated-capability ids (remote-exec, instantiate-anywhere) reserved-but-refusing; v1 consumers are the shell spawn gates (CONTEXT Consent & security gates)",
2026-06-21T04:47:53.6316590Z       "requiredStages": [
2026-06-21T04:47:53.6317286Z         "impl",
2026-06-21T04:47:53.6317896Z         "unit"
2026-06-21T04:47:53.6318494Z       ],
2026-06-21T04:47:53.6319125Z       "stages": {
2026-06-21T04:47:53.6319763Z         "doc": {
2026-06-21T04:47:53.6320402Z           "complete": false,
2026-06-21T04:47:53.6321117Z           "evidence": []
2026-06-21T04:47:53.6321786Z         },
2026-06-21T04:47:53.6322363Z         "impl": {
2026-06-21T04:47:53.6322987Z           "complete": true,
2026-06-21T04:47:53.6323683Z           "evidence": [
2026-06-21T04:47:53.6324332Z             {
2026-06-21T04:47:53.6325036Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T04:47:53.6325928Z               "line": 27
2026-06-21T04:47:53.6326590Z             },
2026-06-21T04:47:53.6327188Z             {
2026-06-21T04:47:53.6327894Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T04:47:53.6328772Z               "line": 75
2026-06-21T04:47:53.6329500Z             },
2026-06-21T04:47:53.6330094Z             {
2026-06-21T04:47:53.6330785Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T04:47:53.6331968Z               "line": 98
2026-06-21T04:47:53.6332627Z             },
2026-06-21T04:47:53.6333209Z             {
2026-06-21T04:47:53.6333909Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T04:47:53.6334783Z               "line": 82
2026-06-21T04:47:53.6335444Z             },
2026-06-21T04:47:53.6336030Z             {
2026-06-21T04:47:53.6336737Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T04:47:53.6337638Z               "line": 109
2026-06-21T04:47:53.6338331Z             },
2026-06-21T04:47:53.6338926Z             {
2026-06-21T04:47:53.6339707Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T04:47:53.6340734Z               "line": 127
2026-06-21T04:47:53.6341416Z             },
2026-06-21T04:47:53.6342007Z             {
2026-06-21T04:47:53.6342702Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T04:47:53.6343649Z               "line": 142
2026-06-21T04:47:53.6344297Z             },
2026-06-21T04:47:53.6344899Z             {
2026-06-21T04:47:53.6345550Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6346381Z               "line": 7048
2026-06-21T04:47:53.6347053Z             }
2026-06-21T04:47:53.6347636Z           ]
2026-06-21T04:47:53.6348203Z         },
2026-06-21T04:47:53.6348775Z         "int": {
2026-06-21T04:47:53.6349525Z           "complete": false,
2026-06-21T04:47:53.6350240Z           "evidence": []
2026-06-21T04:47:53.6350905Z         },
2026-06-21T04:47:53.6351472Z         "unit": {
2026-06-21T04:47:53.6352101Z           "complete": true,
2026-06-21T04:47:53.6352797Z           "evidence": [
2026-06-21T04:47:53.6353429Z             {
2026-06-21T04:47:53.6354138Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T04:47:53.6355020Z               "line": 334
2026-06-21T04:47:53.6355692Z             },
2026-06-21T04:47:53.6356283Z             {
2026-06-21T04:47:53.6356993Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T04:47:53.6357871Z               "line": 380
2026-06-21T04:47:53.6358546Z             },
2026-06-21T04:47:53.6359693Z             {
2026-06-21T04:47:53.6360409Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T04:47:53.6361294Z               "line": 391
2026-06-21T04:47:53.6361969Z             },
2026-06-21T04:47:53.6362555Z             {
2026-06-21T04:47:53.6363253Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T04:47:53.6364116Z               "line": 165
2026-06-21T04:47:53.6364774Z             },
2026-06-21T04:47:53.6365365Z             {
2026-06-21T04:47:53.6366057Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T04:47:53.6366915Z               "line": 184
2026-06-21T04:47:53.6367587Z             },
2026-06-21T04:47:53.6368182Z             {
2026-06-21T04:47:53.6368878Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T04:47:53.6369829Z               "line": 204
2026-06-21T04:47:53.6370492Z             },
2026-06-21T04:47:53.6371074Z             {
2026-06-21T04:47:53.6371736Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6372568Z               "line": 8334
2026-06-21T04:47:53.6373240Z             }
2026-06-21T04:47:53.6373832Z           ]
2026-06-21T04:47:53.6374402Z         }
2026-06-21T04:47:53.6374958Z       }
2026-06-21T04:47:53.6375516Z     },
2026-06-21T04:47:53.6376069Z     {
2026-06-21T04:47:53.6376665Z       "id": "REQ-CONSENT-2",
2026-06-21T04:47:53.6379965Z       "title": "Interactive consent escalation: an ungated high-risk action routes a consent prompt to the user's most-recently-active session; allow-once / allow-always (writes a grant) / deny; pre-consent flags (can_shutdown, shell_wake_spawn_anywhere) author grants via manifest/settings (CONTEXT Consent & security gates)",
2026-06-21T04:47:53.6383280Z       "requiredStages": [
2026-06-21T04:47:53.6383948Z         "impl",
2026-06-21T04:47:53.6384543Z         "unit"
2026-06-21T04:47:53.6385133Z       ],
2026-06-21T04:47:53.6385690Z       "stages": {
2026-06-21T04:47:53.6386438Z         "doc": {
2026-06-21T04:47:53.6387072Z           "complete": false,
2026-06-21T04:47:53.6387791Z           "evidence": []
2026-06-21T04:47:53.6388458Z         },
2026-06-21T04:47:53.6389117Z         "impl": {
2026-06-21T04:47:53.6389789Z           "complete": true,
2026-06-21T04:47:53.6390492Z           "evidence": [
2026-06-21T04:47:53.6391141Z             {
2026-06-21T04:47:53.6391845Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T04:47:53.6392739Z               "line": 140
2026-06-21T04:47:53.6393407Z             },
2026-06-21T04:47:53.6393999Z             {
2026-06-21T04:47:53.6394713Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T04:47:53.6395726Z               "line": 165
2026-06-21T04:47:53.6396407Z             },
2026-06-21T04:47:53.6397007Z             {
2026-06-21T04:47:53.6397718Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T04:47:53.6398591Z               "line": 199
2026-06-21T04:47:53.6399367Z             },
2026-06-21T04:47:53.6400006Z             {
2026-06-21T04:47:53.6400720Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T04:47:53.6401609Z               "line": 241
2026-06-21T04:47:53.6402272Z             },
2026-06-21T04:47:53.6402868Z             {
2026-06-21T04:47:53.6403568Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T04:47:53.6404457Z               "line": 269
2026-06-21T04:47:53.6405115Z             },
2026-06-21T04:47:53.6405712Z             {
2026-06-21T04:47:53.6406413Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T04:47:53.6407305Z               "line": 300
2026-06-21T04:47:53.6407968Z             },
2026-06-21T04:47:53.6408564Z             {
2026-06-21T04:47:53.6409316Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6410157Z               "line": 6839
2026-06-21T04:47:53.6410824Z             },
2026-06-21T04:47:53.6411417Z             {
2026-06-21T04:47:53.6412075Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6412919Z               "line": 6897
2026-06-21T04:47:53.6413582Z             }
2026-06-21T04:47:53.6414205Z           ]
2026-06-21T04:47:53.6414784Z         },
2026-06-21T04:47:53.6415365Z         "int": {
2026-06-21T04:47:53.6416000Z           "complete": false,
2026-06-21T04:47:53.6416719Z           "evidence": []
2026-06-21T04:47:53.6417380Z         },
2026-06-21T04:47:53.6417952Z         "unit": {
2026-06-21T04:47:53.6418581Z           "complete": true,
2026-06-21T04:47:53.6419359Z           "evidence": [
2026-06-21T04:47:53.6420006Z             {
2026-06-21T04:47:53.6420712Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T04:47:53.6422221Z               "line": 419
2026-06-21T04:47:53.6422931Z             },
2026-06-21T04:47:53.6423645Z             {
2026-06-21T04:47:53.6424391Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T04:47:53.6425287Z               "line": 436
2026-06-21T04:47:53.6425993Z             },
2026-06-21T04:47:53.6426618Z             {
2026-06-21T04:47:53.6427373Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T04:47:53.6428345Z               "line": 472
2026-06-21T04:47:53.6429093Z             },
2026-06-21T04:47:53.6429689Z             {
2026-06-21T04:47:53.6430403Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T04:47:53.6431319Z               "line": 516
2026-06-21T04:47:53.6431987Z             },
2026-06-21T04:47:53.6432575Z             {
2026-06-21T04:47:53.6433233Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6434072Z               "line": 9614
2026-06-21T04:47:53.6434831Z             },
2026-06-21T04:47:53.6435662Z             {
2026-06-21T04:47:53.6436442Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6437373Z               "line": 9696
2026-06-21T04:47:53.6438205Z             }
2026-06-21T04:47:53.6439077Z           ]
2026-06-21T04:47:53.6439854Z         }
2026-06-21T04:47:53.6440563Z       }
2026-06-21T04:47:53.6441269Z     },
2026-06-21T04:47:53.6442127Z     {
2026-06-21T04:47:53.6442841Z       "id": "REQ-CONSENT-3",
2026-06-21T04:47:53.6449307Z       "title": "Per-capability approval gates (class-keyed): the require_approval enum may ride INDIVIDUAL [shell.capabilities] entries — gating the dangerous ACT, not just the spawn — with an optional class_key scoping the grant qualifier finer than the capability id ((owner endpoint x device class x node); a remembered HID-class attach grant never authorizes a storage-class attach). Reuses the grant store + interactive escalation + tighten-only floor (REQ-CONSENT-1/2 plumbing). Spawn gates govern EXISTENCE; capability gates govern ACTS — an explicitly distinct invariant (CONTEXT:283, ratified 2026-06-11 Gateway grill).",
2026-06-21T04:47:53.6455612Z       "requiredStages": [
2026-06-21T04:47:53.6456383Z         "doc",
2026-06-21T04:47:53.6457111Z         "impl",
2026-06-21T04:47:53.6457826Z         "unit",
2026-06-21T04:47:53.6458498Z         "int"
2026-06-21T04:47:53.6459325Z       ],
2026-06-21T04:47:53.6460040Z       "stages": {
2026-06-21T04:47:53.6460793Z         "doc": {
2026-06-21T04:47:53.6461519Z           "complete": true,
2026-06-21T04:47:53.6462295Z           "evidence": [
2026-06-21T04:47:53.6463168Z             {
2026-06-21T04:47:53.6463872Z               "path": "CONTEXT.md",
2026-06-21T04:47:53.6464785Z               "line": 304
2026-06-21T04:47:53.6465566Z             }
2026-06-21T04:47:53.6466287Z           ]
2026-06-21T04:47:53.6466943Z         },
2026-06-21T04:47:53.6467595Z         "impl": {
2026-06-21T04:47:53.6468386Z           "complete": true,
2026-06-21T04:47:53.6469278Z           "evidence": [
2026-06-21T04:47:53.6470094Z             {
2026-06-21T04:47:53.6470938Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T04:47:53.6471940Z               "line": 123
2026-06-21T04:47:53.6472750Z             },
2026-06-21T04:47:53.6473437Z             {
2026-06-21T04:47:53.6473851Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T04:47:53.6474247Z               "line": 162
2026-06-21T04:47:53.6474608Z             },
2026-06-21T04:47:53.6474896Z             {
2026-06-21T04:47:53.6475340Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T04:47:53.6475660Z               "line": 291
2026-06-21T04:47:53.6476012Z             },
2026-06-21T04:47:53.6476350Z             {
2026-06-21T04:47:53.6476780Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:53.6477128Z               "line": 574
2026-06-21T04:47:53.6477418Z             },
2026-06-21T04:47:53.6477782Z             {
2026-06-21T04:47:53.6478212Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:53.6478555Z               "line": 824
2026-06-21T04:47:53.6478893Z             },
2026-06-21T04:47:53.6479303Z             {
2026-06-21T04:47:53.6479758Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6480090Z               "line": 6965
2026-06-21T04:47:53.6480417Z             }
2026-06-21T04:47:53.6480741Z           ]
2026-06-21T04:47:53.6481056Z         },
2026-06-21T04:47:53.6481413Z         "int": {
2026-06-21T04:47:53.6481742Z           "complete": true,
2026-06-21T04:47:53.6482090Z           "evidence": [
2026-06-21T04:47:53.6482386Z             {
2026-06-21T04:47:53.6482880Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-21T04:47:53.6483237Z               "line": 16
2026-06-21T04:47:53.6483543Z             }
2026-06-21T04:47:53.6483867Z           ]
2026-06-21T04:47:53.6484158Z         },
2026-06-21T04:47:53.6484502Z         "unit": {
2026-06-21T04:47:53.6484807Z           "complete": true,
2026-06-21T04:47:53.6485206Z           "evidence": [
2026-06-21T04:47:53.6485533Z             {
2026-06-21T04:47:53.6485967Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T04:47:53.6486315Z               "line": 1019
2026-06-21T04:47:53.6486596Z             },
2026-06-21T04:47:53.6486968Z             {
2026-06-21T04:47:53.6487388Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T04:47:53.6487879Z               "line": 1066
2026-06-21T04:47:53.6488219Z             },
2026-06-21T04:47:53.6488506Z             {
2026-06-21T04:47:53.6489106Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:53.6489435Z               "line": 1394
2026-06-21T04:47:53.6489773Z             }
2026-06-21T04:47:53.6490097Z           ]
2026-06-21T04:47:53.6490384Z         }
2026-06-21T04:47:53.6490753Z       }
2026-06-21T04:47:53.6491063Z     },
2026-06-21T04:47:53.6491382Z     {
2026-06-21T04:47:53.6491711Z       "id": "REQ-CONV-1",
2026-06-21T04:47:53.6496050Z       "title": "Peer address seeding, both cold starts: durable peer-addrs.json (identity dir) maps peer pubkey → last-known dialable address; the pump's resolver consults it FIRST with id-only discovery fallback on miss or dial failure (a stale addr never strands a peer); written by the pairing ceremony (both sides, from the live connection) and by the pump on successful connect; post-join first sync and post-restart resync converge in seconds, not ~1 min (M8 decisions 14, 20)",
2026-06-21T04:47:53.6496646Z       "requiredStages": [
2026-06-21T04:47:53.6496941Z         "impl",
2026-06-21T04:47:53.6497265Z         "unit"
2026-06-21T04:47:53.6497595Z       ],
2026-06-21T04:47:53.6497881Z       "stages": {
2026-06-21T04:47:53.6498278Z         "doc": {
2026-06-21T04:47:53.6498605Z           "complete": false,
2026-06-21T04:47:53.6499023Z           "evidence": []
2026-06-21T04:47:53.6499314Z         },
2026-06-21T04:47:53.6499666Z         "impl": {
2026-06-21T04:47:53.6500090Z           "complete": true,
2026-06-21T04:47:53.6500405Z           "evidence": [
2026-06-21T04:47:53.6500734Z             {
2026-06-21T04:47:53.6501162Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T04:47:53.6501512Z               "line": 938
2026-06-21T04:47:53.6501852Z             },
2026-06-21T04:47:53.6502186Z             {
2026-06-21T04:47:53.6502647Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T04:47:53.6502967Z               "line": 94
2026-06-21T04:47:53.6503291Z             },
2026-06-21T04:47:53.6503630Z             {
2026-06-21T04:47:53.6504096Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T04:47:53.6504440Z               "line": 345
2026-06-21T04:47:53.6504736Z             },
2026-06-21T04:47:53.6505056Z             {
2026-06-21T04:47:53.6505507Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T04:47:53.6505855Z               "line": 387
2026-06-21T04:47:53.6506156Z             },
2026-06-21T04:47:53.6506496Z             {
2026-06-21T04:47:53.6506929Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T04:47:53.6507283Z               "line": 472
2026-06-21T04:47:53.6507631Z             },
2026-06-21T04:47:53.6507927Z             {
2026-06-21T04:47:53.6508398Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T04:47:53.6508698Z               "line": 667
2026-06-21T04:47:53.6509131Z             },
2026-06-21T04:47:53.6509472Z             {
2026-06-21T04:47:53.6509888Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T04:47:53.6510245Z               "line": 693
2026-06-21T04:47:53.6510542Z             },
2026-06-21T04:47:53.6510894Z             {
2026-06-21T04:47:53.6511366Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T04:47:53.6511674Z               "line": 369
2026-06-21T04:47:53.6512015Z             },
2026-06-21T04:47:53.6512316Z             {
2026-06-21T04:47:53.6512779Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T04:47:53.6513094Z               "line": 19
2026-06-21T04:47:53.6513428Z             }
2026-06-21T04:47:53.6513766Z           ]
2026-06-21T04:47:53.6514062Z         },
2026-06-21T04:47:53.6514419Z         "int": {
2026-06-21T04:47:53.6514752Z           "complete": false,
2026-06-21T04:47:53.6515114Z           "evidence": []
2026-06-21T04:47:53.6515410Z         },
2026-06-21T04:47:53.6515734Z         "unit": {
2026-06-21T04:47:53.6516120Z           "complete": true,
2026-06-21T04:47:53.6516589Z           "evidence": [
2026-06-21T04:47:53.6516925Z             {
2026-06-21T04:47:53.6517347Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T04:47:53.6517699Z               "line": 1263
2026-06-21T04:47:53.6518048Z             },
2026-06-21T04:47:53.6518391Z             {
2026-06-21T04:47:53.6518845Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T04:47:53.6519239Z               "line": 108
2026-06-21T04:47:53.6519583Z             },
2026-06-21T04:47:53.6519862Z             {
2026-06-21T04:47:53.6520376Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T04:47:53.6520839Z               "line": 134
2026-06-21T04:47:53.6521134Z             },
2026-06-21T04:47:53.6521454Z             {
2026-06-21T04:47:53.6521878Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T04:47:53.6522277Z               "line": 144
2026-06-21T04:47:53.6522604Z             }
2026-06-21T04:47:53.6522895Z           ]
2026-06-21T04:47:53.6523233Z         }
2026-06-21T04:47:53.6523505Z       }
2026-06-21T04:47:53.6523877Z     },
2026-06-21T04:47:53.6524164Z     {
2026-06-21T04:47:53.6524522Z       "id": "REQ-CONV-2",
2026-06-21T04:47:53.6527959Z       "title": "Event-driven advertisement: endpoint online/offline transitions (ready-listener start/stop, rest-state transition, perch death) trigger an immediate advertise_local + peer push as a WAKE of the existing pump loop (no second advertisement path — epoch lease + visibility gates ride unchanged); the cadence stays the steady-state floor (M8 decision 15)",
2026-06-21T04:47:53.6528283Z       "requiredStages": [
2026-06-21T04:47:53.6528675Z         "impl",
2026-06-21T04:47:53.6529127Z         "unit"
2026-06-21T04:47:53.6529461Z       ],
2026-06-21T04:47:53.6529814Z       "stages": {
2026-06-21T04:47:53.6530096Z         "doc": {
2026-06-21T04:47:53.6530512Z           "complete": false,
2026-06-21T04:47:53.6530822Z           "evidence": []
2026-06-21T04:47:53.6531151Z         },
2026-06-21T04:47:53.6531480Z         "impl": {
2026-06-21T04:47:53.6531818Z           "complete": true,
2026-06-21T04:47:53.6532215Z           "evidence": [
2026-06-21T04:47:53.6532511Z             {
2026-06-21T04:47:53.6532984Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:53.6533299Z               "line": 409
2026-06-21T04:47:53.6533618Z             },
2026-06-21T04:47:53.6533999Z             {
2026-06-21T04:47:53.6534442Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T04:47:53.6534815Z               "line": 119
2026-06-21T04:47:53.6535107Z             },
2026-06-21T04:47:53.6535416Z             {
2026-06-21T04:47:53.6535910Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.6536276Z               "line": 841
2026-06-21T04:47:53.6536615Z             },
2026-06-21T04:47:53.6536906Z             {
2026-06-21T04:47:53.6537370Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.6537779Z               "line": 852
2026-06-21T04:47:53.6538115Z             },
2026-06-21T04:47:53.6538421Z             {
2026-06-21T04:47:53.6538863Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T04:47:53.6539274Z               "line": 334
2026-06-21T04:47:53.6539603Z             },
2026-06-21T04:47:53.6539956Z             {
2026-06-21T04:47:53.6540322Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6540660Z               "line": 3074
2026-06-21T04:47:53.6540964Z             },
2026-06-21T04:47:53.6541292Z             {
2026-06-21T04:47:53.6541711Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6542016Z               "line": 3090
2026-06-21T04:47:53.6542350Z             },
2026-06-21T04:47:53.6542645Z             {
2026-06-21T04:47:53.6543061Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6543479Z               "line": 3170
2026-06-21T04:47:53.6543777Z             }
2026-06-21T04:47:53.6544107Z           ]
2026-06-21T04:47:53.6544526Z         },
2026-06-21T04:47:53.6544902Z         "int": {
2026-06-21T04:47:53.6545246Z           "complete": false,
2026-06-21T04:47:53.6545589Z           "evidence": []
2026-06-21T04:47:53.6545913Z         },
2026-06-21T04:47:53.6546217Z         "unit": {
2026-06-21T04:47:53.6546618Z           "complete": true,
2026-06-21T04:47:53.6546933Z           "evidence": [
2026-06-21T04:47:53.6547257Z             {
2026-06-21T04:47:53.6547668Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T04:47:53.6548011Z               "line": 889
2026-06-21T04:47:53.6548363Z             },
2026-06-21T04:47:53.6548671Z             {
2026-06-21T04:47:53.6549204Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T04:47:53.6549695Z               "line": 1014
2026-06-21T04:47:53.6550028Z             },
2026-06-21T04:47:53.6550386Z             {
2026-06-21T04:47:53.6550845Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T04:47:53.6551193Z               "line": 215
2026-06-21T04:47:53.6551482Z             }
2026-06-21T04:47:53.6551814Z           ]
2026-06-21T04:47:53.6552091Z         }
2026-06-21T04:47:53.6552467Z       }
2026-06-21T04:47:53.6552791Z     },
2026-06-21T04:47:53.6553092Z     {
2026-06-21T04:47:53.6553449Z       "id": "REQ-DAEMON-1",
2026-06-21T04:47:53.6553996Z       "title": "One per-machine spt-daemon owning all per-machine state",
2026-06-21T04:47:53.6554405Z       "requiredStages": [
2026-06-21T04:47:53.6554743Z         "impl",
2026-06-21T04:47:53.6555058Z         "unit",
2026-06-21T04:47:53.6555372Z         "int"
2026-06-21T04:47:53.6555649Z       ],
2026-06-21T04:47:53.6556030Z       "stages": {
2026-06-21T04:47:53.6556330Z         "doc": {
2026-06-21T04:47:53.6556697Z           "complete": false,
2026-06-21T04:47:53.6557050Z           "evidence": []
2026-06-21T04:47:53.6557327Z         },
2026-06-21T04:47:53.6557698Z         "impl": {
2026-06-21T04:47:53.6558017Z           "complete": true,
2026-06-21T04:47:53.6558370Z           "evidence": [
2026-06-21T04:47:53.6558671Z             {
2026-06-21T04:47:53.6559198Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.6559634Z               "line": 229
2026-06-21T04:47:53.6559940Z             },
2026-06-21T04:47:53.6560278Z             {
2026-06-21T04:47:53.6560689Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T04:47:53.6560999Z               "line": 12
2026-06-21T04:47:53.6568043Z             },
2026-06-21T04:47:53.6568372Z             {
2026-06-21T04:47:53.6568821Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:53.6569226Z               "line": 16
2026-06-21T04:47:53.6569502Z             },
2026-06-21T04:47:53.6569777Z             {
2026-06-21T04:47:53.6570181Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:53.6570467Z               "line": 309
2026-06-21T04:47:53.6570734Z             },
2026-06-21T04:47:53.6570992Z             {
2026-06-21T04:47:53.6571392Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.6571683Z               "line": 24
2026-06-21T04:47:53.6571956Z             },
2026-06-21T04:47:53.6572218Z             {
2026-06-21T04:47:53.6572616Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.6572900Z               "line": 262
2026-06-21T04:47:53.6573157Z             },
2026-06-21T04:47:53.6573419Z             {
2026-06-21T04:47:53.6573816Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.6574111Z               "line": 279
2026-06-21T04:47:53.6574373Z             },
2026-06-21T04:47:53.6574640Z             {
2026-06-21T04:47:53.6575035Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.6575328Z               "line": 356
2026-06-21T04:47:53.6575596Z             },
2026-06-21T04:47:53.6575849Z             {
2026-06-21T04:47:53.6576258Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.6576545Z               "line": 670
2026-06-21T04:47:53.6576812Z             },
2026-06-21T04:47:53.6577240Z             {
2026-06-21T04:47:53.6577618Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T04:47:53.6577902Z               "line": 15
2026-06-21T04:47:53.6578174Z             },
2026-06-21T04:47:53.6578447Z             {
2026-06-21T04:47:53.6578808Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T04:47:53.6579175Z               "line": 241
2026-06-21T04:47:53.6579438Z             },
2026-06-21T04:47:53.6579700Z             {
2026-06-21T04:47:53.6580062Z               "path": "crates/spt/src/api/live.rs",
2026-06-21T04:47:53.6580346Z               "line": 13
2026-06-21T04:47:53.6580613Z             },
2026-06-21T04:47:53.6580994Z             {
2026-06-21T04:47:53.6581370Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:53.6581662Z               "line": 382
2026-06-21T04:47:53.6581914Z             },
2026-06-21T04:47:53.6582173Z             {
2026-06-21T04:47:53.6582530Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:53.6582812Z               "line": 494
2026-06-21T04:47:53.6583081Z             }
2026-06-21T04:47:53.6583345Z           ]
2026-06-21T04:47:53.6583599Z         },
2026-06-21T04:47:53.6583866Z         "int": {
2026-06-21T04:47:53.6584167Z           "complete": true,
2026-06-21T04:47:53.6584443Z           "evidence": [
2026-06-21T04:47:53.6584716Z             {
2026-06-21T04:47:53.6585263Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-21T04:47:53.6585543Z               "line": 2
2026-06-21T04:47:53.6585809Z             },
2026-06-21T04:47:53.6586070Z             {
2026-06-21T04:47:53.6586619Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-21T04:47:53.6586909Z               "line": 16
2026-06-21T04:47:53.6587176Z             },
2026-06-21T04:47:53.6587439Z             {
2026-06-21T04:47:53.6587883Z               "path": "crates/spt/tests/live_bind_firsthost_e2e.rs",
2026-06-21T04:47:53.6588159Z               "line": 12
2026-06-21T04:47:53.6588415Z             },
2026-06-21T04:47:53.6588683Z             {
2026-06-21T04:47:53.6589159Z               "path": "crates/spt/tests/live_firsthost_e2e.rs",
2026-06-21T04:47:53.6589445Z               "line": 12
2026-06-21T04:47:53.6589711Z             },
2026-06-21T04:47:53.6589974Z             {
2026-06-21T04:47:53.6590399Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T04:47:53.6590674Z               "line": 44
2026-06-21T04:47:53.6590939Z             }
2026-06-21T04:47:53.6591197Z           ]
2026-06-21T04:47:53.6591464Z         },
2026-06-21T04:47:53.6591735Z         "unit": {
2026-06-21T04:47:53.6592031Z           "complete": true,
2026-06-21T04:47:53.6592312Z           "evidence": [
2026-06-21T04:47:53.6592574Z             {
2026-06-21T04:47:53.6592955Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T04:47:53.6593242Z               "line": 285
2026-06-21T04:47:53.6593504Z             },
2026-06-21T04:47:53.6593774Z             {
2026-06-21T04:47:53.6594140Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T04:47:53.6594431Z               "line": 293
2026-06-21T04:47:53.6594694Z             },
2026-06-21T04:47:53.6594956Z             {
2026-06-21T04:47:53.6595328Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T04:47:53.6595614Z               "line": 309
2026-06-21T04:47:53.6595871Z             },
2026-06-21T04:47:53.6596132Z             {
2026-06-21T04:47:53.6596515Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T04:47:53.6596801Z               "line": 317
2026-06-21T04:47:53.6597069Z             },
2026-06-21T04:47:53.6597336Z             {
2026-06-21T04:47:53.6597717Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:53.6598004Z               "line": 659
2026-06-21T04:47:53.6598270Z             },
2026-06-21T04:47:53.6598534Z             {
2026-06-21T04:47:53.6598924Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:53.6599472Z               "line": 729
2026-06-21T04:47:53.6599729Z             },
2026-06-21T04:47:53.6599990Z             {
2026-06-21T04:47:53.6600378Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.6600663Z               "line": 1211
2026-06-21T04:47:53.6600935Z             },
2026-06-21T04:47:53.6601187Z             {
2026-06-21T04:47:53.6601585Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.6601871Z               "line": 1248
2026-06-21T04:47:53.6602133Z             },
2026-06-21T04:47:53.6602396Z             {
2026-06-21T04:47:53.6602782Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.6603177Z               "line": 1271
2026-06-21T04:47:53.6603440Z             },
2026-06-21T04:47:53.6603702Z             {
2026-06-21T04:47:53.6604092Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.6604371Z               "line": 1300
2026-06-21T04:47:53.6604629Z             },
2026-06-21T04:47:53.6604892Z             {
2026-06-21T04:47:53.6605277Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.6605554Z               "line": 1348
2026-06-21T04:47:53.6605821Z             },
2026-06-21T04:47:53.6606087Z             {
2026-06-21T04:47:53.6606470Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.6606758Z               "line": 1391
2026-06-21T04:47:53.6607018Z             },
2026-06-21T04:47:53.6607286Z             {
2026-06-21T04:47:53.6607648Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T04:47:53.6607934Z               "line": 106
2026-06-21T04:47:53.6608192Z             },
2026-06-21T04:47:53.6608459Z             {
2026-06-21T04:47:53.6608826Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T04:47:53.6609502Z               "line": 132
2026-06-21T04:47:53.6609775Z             },
2026-06-21T04:47:53.6610037Z             {
2026-06-21T04:47:53.6610399Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T04:47:53.6610690Z               "line": 530
2026-06-21T04:47:53.6610952Z             }
2026-06-21T04:47:53.6611214Z           ]
2026-06-21T04:47:53.6611471Z         }
2026-06-21T04:47:53.6611737Z       }
2026-06-21T04:47:53.6611994Z     },
2026-06-21T04:47:53.6612255Z     {
2026-06-21T04:47:53.6612550Z       "id": "REQ-DAEMON-2",
2026-06-21T04:47:53.6612989Z       "title": "Broker/brain split for seamless self-update",
2026-06-21T04:47:53.6613289Z       "requiredStages": [
2026-06-21T04:47:53.6613548Z         "impl",
2026-06-21T04:47:53.6613815Z         "unit",
2026-06-21T04:47:53.6614076Z         "int"
2026-06-21T04:47:53.6614334Z       ],
2026-06-21T04:47:53.6614614Z       "stages": {
2026-06-21T04:47:53.6614866Z         "doc": {
2026-06-21T04:47:53.6615151Z           "complete": true,
2026-06-21T04:47:53.6615427Z           "evidence": [
2026-06-21T04:47:53.6615688Z             {
2026-06-21T04:47:53.6616047Z               "path": "docs/TWO-HOST-RUNBOOK.md",
2026-06-21T04:47:53.6616337Z               "line": 250
2026-06-21T04:47:53.6616605Z             }
2026-06-21T04:47:53.6616867Z           ]
2026-06-21T04:47:53.6617134Z         },
2026-06-21T04:47:53.6617395Z         "impl": {
2026-06-21T04:47:53.6617694Z           "complete": true,
2026-06-21T04:47:53.6617974Z           "evidence": [
2026-06-21T04:47:53.6618231Z             {
2026-06-21T04:47:53.6618599Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T04:47:53.6618870Z               "line": 23
2026-06-21T04:47:53.6619209Z             },
2026-06-21T04:47:53.6619467Z             {
2026-06-21T04:47:53.6619834Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T04:47:53.6620119Z               "line": 844
2026-06-21T04:47:53.6620391Z             },
2026-06-21T04:47:53.6620649Z             {
2026-06-21T04:47:53.6621007Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T04:47:53.6621293Z               "line": 869
2026-06-21T04:47:53.6621551Z             },
2026-06-21T04:47:53.6621803Z             {
2026-06-21T04:47:53.6622289Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T04:47:53.6622573Z               "line": 1105
2026-06-21T04:47:53.6622834Z             },
2026-06-21T04:47:53.6623082Z             {
2026-06-21T04:47:53.6623469Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.6623736Z               "line": 32
2026-06-21T04:47:53.6624002Z             },
2026-06-21T04:47:53.6624259Z             {
2026-06-21T04:47:53.6624626Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.6624917Z               "line": 1102
2026-06-21T04:47:53.6625179Z             },
2026-06-21T04:47:53.6625529Z             {
2026-06-21T04:47:53.6625911Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.6626196Z               "line": 1813
2026-06-21T04:47:53.6626469Z             },
2026-06-21T04:47:53.6626726Z             {
2026-06-21T04:47:53.6627102Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.6627379Z               "line": 2100
2026-06-21T04:47:53.6627648Z             },
2026-06-21T04:47:53.6627907Z             {
2026-06-21T04:47:53.6628278Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T04:47:53.6628559Z               "line": 11
2026-06-21T04:47:53.6628820Z             },
2026-06-21T04:47:53.6629165Z             {
2026-06-21T04:47:53.6629533Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.6629808Z               "line": 153
2026-06-21T04:47:53.6630075Z             },
2026-06-21T04:47:53.6630327Z             {
2026-06-21T04:47:53.6630707Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.6630999Z               "line": 343
2026-06-21T04:47:53.6631271Z             },
2026-06-21T04:47:53.6631538Z             {
2026-06-21T04:47:53.6631900Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T04:47:53.6632177Z               "line": 13
2026-06-21T04:47:53.6632449Z             },
2026-06-21T04:47:53.6632707Z             {
2026-06-21T04:47:53.6633096Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T04:47:53.6633380Z               "line": 27
2026-06-21T04:47:53.6633637Z             },
2026-06-21T04:47:53.6633908Z             {
2026-06-21T04:47:53.6634286Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T04:47:53.6634577Z               "line": 147
2026-06-21T04:47:53.6634839Z             },
2026-06-21T04:47:53.6635096Z             {
2026-06-21T04:47:53.6635473Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T04:47:53.6635744Z               "line": 632
2026-06-21T04:47:53.6636024Z             },
2026-06-21T04:47:53.6636291Z             {
2026-06-21T04:47:53.6636672Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T04:47:53.6636958Z               "line": 853
2026-06-21T04:47:53.6637220Z             },
2026-06-21T04:47:53.6637487Z             {
2026-06-21T04:47:53.6637869Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T04:47:53.6638160Z               "line": 1000
2026-06-21T04:47:53.6638424Z             },
2026-06-21T04:47:53.6638675Z             {
2026-06-21T04:47:53.6639134Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T04:47:53.6639410Z               "line": 1089
2026-06-21T04:47:53.6639686Z             },
2026-06-21T04:47:53.6639948Z             {
2026-06-21T04:47:53.6640330Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T04:47:53.6640621Z               "line": 1211
2026-06-21T04:47:53.6640873Z             },
2026-06-21T04:47:53.6641126Z             {
2026-06-21T04:47:53.6641507Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T04:47:53.6641789Z               "line": 10
2026-06-21T04:47:53.6642041Z             }
2026-06-21T04:47:53.6642303Z           ]
2026-06-21T04:47:53.6642560Z         },
2026-06-21T04:47:53.6642818Z         "int": {
2026-06-21T04:47:53.6643104Z           "complete": true,
2026-06-21T04:47:53.6643451Z           "evidence": [
2026-06-21T04:47:53.6643820Z             {
2026-06-21T04:47:53.6644206Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T04:47:53.6644488Z               "line": 17
2026-06-21T04:47:53.6644755Z             },
2026-06-21T04:47:53.6645013Z             {
2026-06-21T04:47:53.6645422Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T04:47:53.6645690Z               "line": 90
2026-06-21T04:47:53.6645961Z             },
2026-06-21T04:47:53.6646211Z             {
2026-06-21T04:47:53.6646626Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T04:47:53.6646918Z               "line": 110
2026-06-21T04:47:53.6647180Z             },
2026-06-21T04:47:53.6647546Z             {
2026-06-21T04:47:53.6647937Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T04:47:53.6648213Z               "line": 186
2026-06-21T04:47:53.6648477Z             },
2026-06-21T04:47:53.6648739Z             {
2026-06-21T04:47:53.6649221Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T04:47:53.6649512Z               "line": 309
2026-06-21T04:47:53.6649779Z             },
2026-06-21T04:47:53.6650033Z             {
2026-06-21T04:47:53.6650427Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-21T04:47:53.6650714Z               "line": 128
2026-06-21T04:47:53.6650982Z             },
2026-06-21T04:47:53.6651244Z             {
2026-06-21T04:47:53.6651626Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T04:47:53.6651909Z               "line": 59
2026-06-21T04:47:53.6652166Z             }
2026-06-21T04:47:53.6652434Z           ]
2026-06-21T04:47:53.6652692Z         },
2026-06-21T04:47:53.6652973Z         "unit": {
2026-06-21T04:47:53.6653264Z           "complete": true,
2026-06-21T04:47:53.6653542Z           "evidence": [
2026-06-21T04:47:53.6653798Z             {
2026-06-21T04:47:53.6654159Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T04:47:53.6654447Z               "line": 62
2026-06-21T04:47:53.6654709Z             },
2026-06-21T04:47:53.6654977Z             {
2026-06-21T04:47:53.6655348Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T04:47:53.6655635Z               "line": 76
2026-06-21T04:47:53.6655897Z             },
2026-06-21T04:47:53.6656160Z             {
2026-06-21T04:47:53.6656526Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T04:47:53.6656808Z               "line": 88
2026-06-21T04:47:53.6657069Z             },
2026-06-21T04:47:53.6657334Z             {
2026-06-21T04:47:53.6657711Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T04:47:53.6658002Z               "line": 347
2026-06-21T04:47:53.6658264Z             },
2026-06-21T04:47:53.6658526Z             {
2026-06-21T04:47:53.6658888Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T04:47:53.6659237Z               "line": 873
2026-06-21T04:47:53.6659498Z             },
2026-06-21T04:47:53.6659758Z             {
2026-06-21T04:47:53.6660124Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T04:47:53.6660411Z               "line": 881
2026-06-21T04:47:53.6660673Z             },
2026-06-21T04:47:53.6660931Z             {
2026-06-21T04:47:53.6661284Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T04:47:53.6661566Z               "line": 898
2026-06-21T04:47:53.6661828Z             },
2026-06-21T04:47:53.6662090Z             {
2026-06-21T04:47:53.6662446Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T04:47:53.6662727Z               "line": 974
2026-06-21T04:47:53.6662994Z             },
2026-06-21T04:47:53.6663248Z             {
2026-06-21T04:47:53.6663628Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T04:47:53.6663915Z               "line": 1282
2026-06-21T04:47:53.6664177Z             },
2026-06-21T04:47:53.6664431Z             {
2026-06-21T04:47:53.6664813Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T04:47:53.6665104Z               "line": 1294
2026-06-21T04:47:53.6665466Z             },
2026-06-21T04:47:53.6665723Z             {
2026-06-21T04:47:53.6666114Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T04:47:53.6666414Z               "line": 110
2026-06-21T04:47:53.6666668Z             },
2026-06-21T04:47:53.6666935Z             {
2026-06-21T04:47:53.6667321Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T04:47:53.6667596Z               "line": 145
2026-06-21T04:47:53.6667865Z             }
2026-06-21T04:47:53.6668123Z           ]
2026-06-21T04:47:53.6668385Z         }
2026-06-21T04:47:53.6668633Z       }
2026-06-21T04:47:53.6668896Z     },
2026-06-21T04:47:53.6669230Z     {
2026-06-21T04:47:53.6669639Z       "id": "REQ-DAEMON-3",
2026-06-21T04:47:53.6670134Z       "title": "Any api invocation auto-starts the daemon if absent",
2026-06-21T04:47:53.6670432Z       "requiredStages": [
2026-06-21T04:47:53.6670698Z         "impl",
2026-06-21T04:47:53.6670952Z         "unit",
2026-06-21T04:47:53.6671214Z         "int"
2026-06-21T04:47:53.6671482Z       ],
2026-06-21T04:47:53.6671749Z       "stages": {
2026-06-21T04:47:53.6672015Z         "doc": {
2026-06-21T04:47:53.6672306Z           "complete": false,
2026-06-21T04:47:53.6672592Z           "evidence": []
2026-06-21T04:47:53.6672849Z         },
2026-06-21T04:47:53.6673121Z         "impl": {
2026-06-21T04:47:53.6673403Z           "complete": true,
2026-06-21T04:47:53.6673684Z           "evidence": [
2026-06-21T04:47:53.6673936Z             {
2026-06-21T04:47:53.6674313Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.6674599Z               "line": 14
2026-06-21T04:47:53.6674856Z             },
2026-06-21T04:47:53.6675122Z             {
2026-06-21T04:47:53.6675515Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T04:47:53.6675792Z               "line": 11
2026-06-21T04:47:53.6676055Z             },
2026-06-21T04:47:53.6676312Z             {
2026-06-21T04:47:53.6676670Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T04:47:53.6676955Z               "line": 305
2026-06-21T04:47:53.6677233Z             },
2026-06-21T04:47:53.6677495Z             {
2026-06-21T04:47:53.6677824Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6678118Z               "line": 1956
2026-06-21T04:47:53.6678377Z             },
2026-06-21T04:47:53.6678640Z             {
2026-06-21T04:47:53.6679035Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6679317Z               "line": 4235
2026-06-21T04:47:53.6679575Z             },
2026-06-21T04:47:53.6679837Z             {
2026-06-21T04:47:53.6680157Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6680439Z               "line": 4256
2026-06-21T04:47:53.6680713Z             }
2026-06-21T04:47:53.6680973Z           ]
2026-06-21T04:47:53.6681231Z         },
2026-06-21T04:47:53.6681489Z         "int": {
2026-06-21T04:47:53.6681770Z           "complete": true,
2026-06-21T04:47:53.6682056Z           "evidence": [
2026-06-21T04:47:53.6682319Z             {
2026-06-21T04:47:53.6682700Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T04:47:53.6682977Z               "line": 49
2026-06-21T04:47:53.6683234Z             },
2026-06-21T04:47:53.6683499Z             {
2026-06-21T04:47:53.6683880Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T04:47:53.6684171Z               "line": 487
2026-06-21T04:47:53.6684424Z             }
2026-06-21T04:47:53.6684686Z           ]
2026-06-21T04:47:53.6684940Z         },
2026-06-21T04:47:53.6685212Z         "unit": {
2026-06-21T04:47:53.6685503Z           "complete": true,
2026-06-21T04:47:53.6685777Z           "evidence": [
2026-06-21T04:47:53.6686057Z             {
2026-06-21T04:47:53.6686467Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.6686752Z               "line": 1553
2026-06-21T04:47:53.6687010Z             },
2026-06-21T04:47:53.6687273Z             {
2026-06-21T04:47:53.6687616Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6687997Z               "line": 10715
2026-06-21T04:47:53.6688274Z             }
2026-06-21T04:47:53.6688530Z           ]
2026-06-21T04:47:53.6688801Z         }
2026-06-21T04:47:53.6689224Z       }
2026-06-21T04:47:53.6689482Z     },
2026-06-21T04:47:53.6689753Z     {
2026-06-21T04:47:53.6690031Z       "id": "REQ-DAEMON-4",
2026-06-21T04:47:53.6690416Z       "title": "Honor every KNOWN-HAZARDS invariant",
2026-06-21T04:47:53.6690708Z       "requiredStages": [
2026-06-21T04:47:53.6690980Z         "impl",
2026-06-21T04:47:53.6691240Z         "unit",
2026-06-21T04:47:53.6691504Z         "int"
2026-06-21T04:47:53.6691767Z       ],
2026-06-21T04:47:53.6692025Z       "stages": {
2026-06-21T04:47:53.6692397Z         "doc": {
2026-06-21T04:47:53.6692687Z           "complete": false,
2026-06-21T04:47:53.6692959Z           "evidence": []
2026-06-21T04:47:53.6693218Z         },
2026-06-21T04:47:53.6693479Z         "impl": {
2026-06-21T04:47:53.6693765Z           "complete": true,
2026-06-21T04:47:53.6694045Z           "evidence": [
2026-06-21T04:47:53.6694317Z             {
2026-06-21T04:47:53.6694717Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:53.6694994Z               "line": 464
2026-06-21T04:47:53.6695261Z             },
2026-06-21T04:47:53.6695529Z             {
2026-06-21T04:47:53.6695928Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:53.6696205Z               "line": 529
2026-06-21T04:47:53.6696452Z             },
2026-06-21T04:47:53.6696712Z             {
2026-06-21T04:47:53.6697099Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:53.6697385Z               "line": 551
2026-06-21T04:47:53.6697642Z             }
2026-06-21T04:47:53.6697913Z           ]
2026-06-21T04:47:53.6698167Z         },
2026-06-21T04:47:53.6698438Z         "int": {
2026-06-21T04:47:53.6698725Z           "complete": true,
2026-06-21T04:47:53.6699077Z           "evidence": [
2026-06-21T04:47:53.6699343Z             {
2026-06-21T04:47:53.6699755Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-21T04:47:53.6700038Z               "line": 42
2026-06-21T04:47:53.6700304Z             }
2026-06-21T04:47:53.6700572Z           ]
2026-06-21T04:47:53.6700833Z         },
2026-06-21T04:47:53.6701100Z         "unit": {
2026-06-21T04:47:53.6701381Z           "complete": true,
2026-06-21T04:47:53.6701667Z           "evidence": [
2026-06-21T04:47:53.6701928Z             {
2026-06-21T04:47:53.6702313Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T04:47:53.6702604Z               "line": 428
2026-06-21T04:47:53.6702871Z             },
2026-06-21T04:47:53.6703134Z             {
2026-06-21T04:47:53.6703534Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:53.6703820Z               "line": 957
2026-06-21T04:47:53.6704088Z             },
2026-06-21T04:47:53.6704345Z             {
2026-06-21T04:47:53.6704735Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:53.6705015Z               "line": 1027
2026-06-21T04:47:53.6705291Z             },
2026-06-21T04:47:53.6705544Z             {
2026-06-21T04:47:53.6705930Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:53.6706217Z               "line": 1057
2026-06-21T04:47:53.6706488Z             },
2026-06-21T04:47:53.6706755Z             {
2026-06-21T04:47:53.6707143Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:53.6707435Z               "line": 1090
2026-06-21T04:47:53.6707706Z             }
2026-06-21T04:47:53.6707969Z           ]
2026-06-21T04:47:53.6708232Z         }
2026-06-21T04:47:53.6708488Z       }
2026-06-21T04:47:53.6708741Z     },
2026-06-21T04:47:53.6709070Z     {
2026-06-21T04:47:53.6709370Z       "id": "REQ-DAEMON-5",
2026-06-21T04:47:53.6713394Z       "title": "Pump liveness: the peer pump writes a last-tick heartbeat consumed by daemon status / subnet status (decision 23 render legs in REQ-CLI-2/REQ-SUBNET-8); the daemon supervises the pump task — a panic is caught, logged loudly, and the pump restarts with capped backoff (≤5 min), so a 5.9-class death self-heals visibly instead of silently halving the daemon (M8 decision 23; field motivation: hfenduleam 2026-06-07 half-death)",
2026-06-21T04:47:53.6713836Z       "requiredStages": [
2026-06-21T04:47:53.6714103Z         "impl",
2026-06-21T04:47:53.6714366Z         "unit"
2026-06-21T04:47:53.6714633Z       ],
2026-06-21T04:47:53.6714915Z       "stages": {
2026-06-21T04:47:53.6715179Z         "doc": {
2026-06-21T04:47:53.6715470Z           "complete": false,
2026-06-21T04:47:53.6715752Z           "evidence": []
2026-06-21T04:47:53.6716024Z         },
2026-06-21T04:47:53.6716291Z         "impl": {
2026-06-21T04:47:53.6716696Z           "complete": true,
2026-06-21T04:47:53.6716973Z           "evidence": [
2026-06-21T04:47:53.6717241Z             {
2026-06-21T04:47:53.6717628Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T04:47:53.6717900Z               "line": 476
2026-06-21T04:47:53.6718162Z             },
2026-06-21T04:47:53.6718438Z             {
2026-06-21T04:47:53.6718834Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T04:47:53.6719192Z               "line": 769
2026-06-21T04:47:53.6719455Z             },
2026-06-21T04:47:53.6719726Z             {
2026-06-21T04:47:53.6720103Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T04:47:53.6720382Z               "line": 782
2026-06-21T04:47:53.6720647Z             },
2026-06-21T04:47:53.6720914Z             {
2026-06-21T04:47:53.6721300Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T04:47:53.6721581Z               "line": 800
2026-06-21T04:47:53.6721844Z             },
2026-06-21T04:47:53.6722111Z             {
2026-06-21T04:47:53.6722502Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T04:47:53.6722782Z               "line": 841
2026-06-21T04:47:53.6723053Z             }
2026-06-21T04:47:53.6723324Z           ]
2026-06-21T04:47:53.6723576Z         },
2026-06-21T04:47:53.6723843Z         "int": {
2026-06-21T04:47:53.6724143Z           "complete": false,
2026-06-21T04:47:53.6724429Z           "evidence": []
2026-06-21T04:47:53.6724692Z         },
2026-06-21T04:47:53.6724959Z         "unit": {
2026-06-21T04:47:53.6725251Z           "complete": true,
2026-06-21T04:47:53.6725528Z           "evidence": [
2026-06-21T04:47:53.6725792Z             {
2026-06-21T04:47:53.6726174Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T04:47:53.6726465Z               "line": 1189
2026-06-21T04:47:53.6726731Z             },
2026-06-21T04:47:53.6727003Z             {
2026-06-21T04:47:53.6727385Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T04:47:53.6727676Z               "line": 1213
2026-06-21T04:47:53.6727942Z             },
2026-06-21T04:47:53.6728202Z             {
2026-06-21T04:47:53.6728583Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T04:47:53.6728864Z               "line": 1239
2026-06-21T04:47:53.6729203Z             }
2026-06-21T04:47:53.6729475Z           ]
2026-06-21T04:47:53.6729728Z         }
2026-06-21T04:47:53.6729981Z       }
2026-06-21T04:47:53.6730233Z     },
2026-06-21T04:47:53.6730495Z     {
2026-06-21T04:47:53.6730776Z       "id": "REQ-DAEMON-6",
2026-06-21T04:47:53.6736610Z       "title": "Service-aware `daemon start`/`stop`: when an OS service manager has a registered spt-daemon for this user, `spt daemon start` and `spt daemon stop` drive THAT service (so stop doesn't IPC-kill a unit that auto-restart-fights for the broker socket — the kitsubito 2026-06-08 loop). `start` graduates from a `run` alias to a first-class background verb (ensure-up, idempotent, non-blocking); stop routes managed→manager, manual→IPC. Linux=systemd user unit (`systemctl --user start|stop|is-active spt-daemon`, detected by unit-file presence); Windows=no controllable manager (the logon task is boot-only), so start=detached spawn / stop=IPC.",
2026-06-21T04:47:53.6736929Z       "requiredStages": [
2026-06-21T04:47:53.6737197Z         "impl",
2026-06-21T04:47:53.6737592Z         "unit"
2026-06-21T04:47:53.6737859Z       ],
2026-06-21T04:47:53.6738116Z       "stages": {
2026-06-21T04:47:53.6738380Z         "doc": {
2026-06-21T04:47:53.6738674Z           "complete": false,
2026-06-21T04:47:53.6739020Z           "evidence": []
2026-06-21T04:47:53.6739277Z         },
2026-06-21T04:47:53.6739529Z         "impl": {
2026-06-21T04:47:53.6739830Z           "complete": true,
2026-06-21T04:47:53.6740092Z           "evidence": [
2026-06-21T04:47:53.6740359Z             {
2026-06-21T04:47:53.6740741Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.6741026Z               "line": 495
2026-06-21T04:47:53.6741398Z             },
2026-06-21T04:47:53.6741662Z             {
2026-06-21T04:47:53.6742048Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.6742334Z               "line": 526
2026-06-21T04:47:53.6742597Z             },
2026-06-21T04:47:53.6742860Z             {
2026-06-21T04:47:53.6743236Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T04:47:53.6743579Z               "line": 55
2026-06-21T04:47:53.6743833Z             },
2026-06-21T04:47:53.6744107Z             {
2026-06-21T04:47:53.6744478Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T04:47:53.6744754Z               "line": 70
2026-06-21T04:47:53.6745016Z             },
2026-06-21T04:47:53.6745287Z             {
2026-06-21T04:47:53.6745622Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6745902Z               "line": 2020
2026-06-21T04:47:53.6746170Z             },
2026-06-21T04:47:53.6746432Z             {
2026-06-21T04:47:53.6746770Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6747067Z               "line": 2046
2026-06-21T04:47:53.6747333Z             }
2026-06-21T04:47:53.6747600Z           ]
2026-06-21T04:47:53.6747857Z         },
2026-06-21T04:47:53.6748123Z         "int": {
2026-06-21T04:47:53.6748410Z           "complete": false,
2026-06-21T04:47:53.6748705Z           "evidence": []
2026-06-21T04:47:53.6749048Z         },
2026-06-21T04:47:53.6749323Z         "unit": {
2026-06-21T04:47:53.6749614Z           "complete": true,
2026-06-21T04:47:53.6749885Z           "evidence": [
2026-06-21T04:47:53.6750152Z             {
2026-06-21T04:47:53.6750534Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T04:47:53.6750825Z               "line": 288
2026-06-21T04:47:53.6751087Z             },
2026-06-21T04:47:53.6751344Z             {
2026-06-21T04:47:53.6751722Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T04:47:53.6752005Z               "line": 299
2026-06-21T04:47:53.6752270Z             },
2026-06-21T04:47:53.6752528Z             {
2026-06-21T04:47:53.6752914Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T04:47:53.6753195Z               "line": 325
2026-06-21T04:47:53.6753453Z             },
2026-06-21T04:47:53.6753721Z             {
2026-06-21T04:47:53.6754101Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T04:47:53.6754388Z               "line": 351
2026-06-21T04:47:53.6754644Z             }
2026-06-21T04:47:53.6754908Z           ]
2026-06-21T04:47:53.6755170Z         }
2026-06-21T04:47:53.6755433Z       }
2026-06-21T04:47:53.6755696Z     },
2026-06-21T04:47:53.6755948Z     {
2026-06-21T04:47:53.6756245Z       "id": "REQ-DAEMON-7",
2026-06-21T04:47:53.6760559Z       "title": "`daemon run` is foreground-consistent on every platform: the invoking process IS the daemon, blocks until signalled, never auto-detaches or respawns into an invisible background task. The detached/de-elevated background behavior lives ONLY in `start`. Windows: an ELEVATED `daemon run` refuses with guidance (use `start`, or an unelevated shell) instead of respawning detached/de-elevated and vanishing (KH 5.7 preserved — it still never serves elevated).",
2026-06-21T04:47:53.6760884Z       "requiredStages": [
2026-06-21T04:47:53.6761155Z         "impl",
2026-06-21T04:47:53.6761414Z         "unit"
2026-06-21T04:47:53.6761784Z       ],
2026-06-21T04:47:53.6762048Z       "stages": {
2026-06-21T04:47:53.6762306Z         "doc": {
2026-06-21T04:47:53.6762599Z           "complete": false,
2026-06-21T04:47:53.6762891Z           "evidence": []
2026-06-21T04:47:53.6763149Z         },
2026-06-21T04:47:53.6763413Z         "impl": {
2026-06-21T04:47:53.6763703Z           "complete": true,
2026-06-21T04:47:53.6763985Z           "evidence": [
2026-06-21T04:47:53.6764253Z             {
2026-06-21T04:47:53.6764638Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.6764925Z               "line": 545
2026-06-21T04:47:53.6765184Z             },
2026-06-21T04:47:53.6765449Z             {
2026-06-21T04:47:53.6765984Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T04:47:53.6766270Z               "line": 610
2026-06-21T04:47:53.6766537Z             },
2026-06-21T04:47:53.6766795Z             {
2026-06-21T04:47:53.6767181Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T04:47:53.6767468Z               "line": 89
2026-06-21T04:47:53.6767730Z             },
2026-06-21T04:47:53.6767994Z             {
2026-06-21T04:47:53.6768328Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6768605Z               "line": 1957
2026-06-21T04:47:53.6768868Z             }
2026-06-21T04:47:53.6769187Z           ]
2026-06-21T04:47:53.6769454Z         },
2026-06-21T04:47:53.6769717Z         "int": {
2026-06-21T04:47:53.6770013Z           "complete": false,
2026-06-21T04:47:53.6770292Z           "evidence": []
2026-06-21T04:47:53.6770547Z         },
2026-06-21T04:47:53.6770810Z         "unit": {
2026-06-21T04:47:53.6771101Z           "complete": true,
2026-06-21T04:47:53.6771391Z           "evidence": [
2026-06-21T04:47:53.6771645Z             {
2026-06-21T04:47:53.6772025Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T04:47:53.6772303Z               "line": 314
2026-06-21T04:47:53.6772575Z             },
2026-06-21T04:47:53.6772837Z             {
2026-06-21T04:47:53.6773169Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6773452Z               "line": 8102
2026-06-21T04:47:53.6773705Z             }
2026-06-21T04:47:53.6773964Z           ]
2026-06-21T04:47:53.6774221Z         }
2026-06-21T04:47:53.6778117Z       }
2026-06-21T04:47:53.6778408Z     },
2026-06-21T04:47:53.6778670Z     {
2026-06-21T04:47:53.6779056Z       "id": "REQ-DAEMON-8",
2026-06-21T04:47:53.6781937Z       "title": "Internal auto-start prefers the service: `ensure_running` (any spt command's implicit daemon start, REQ-DAEMON-3) routes through the service-aware start path — when a manager has a registered service it starts THAT, never a competing manual `spawn_detached` daemon that would fight the service for the socket.",
2026-06-21T04:47:53.6782271Z       "requiredStages": [
2026-06-21T04:47:53.6782539Z         "impl",
2026-06-21T04:47:53.6782801Z         "unit"
2026-06-21T04:47:53.6783068Z       ],
2026-06-21T04:47:53.6783339Z       "stages": {
2026-06-21T04:47:53.6783610Z         "doc": {
2026-06-21T04:47:53.6783913Z           "complete": false,
2026-06-21T04:47:53.6784204Z           "evidence": []
2026-06-21T04:47:53.6784457Z         },
2026-06-21T04:47:53.6784738Z         "impl": {
2026-06-21T04:47:53.6785029Z           "complete": true,
2026-06-21T04:47:53.6785305Z           "evidence": [
2026-06-21T04:47:53.6785562Z             {
2026-06-21T04:47:53.6785935Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.6786224Z               "line": 445
2026-06-21T04:47:53.6786484Z             },
2026-06-21T04:47:53.6786748Z             {
2026-06-21T04:47:53.6787137Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T04:47:53.6787419Z               "line": 56
2026-06-21T04:47:53.6787690Z             }
2026-06-21T04:47:53.6787935Z           ]
2026-06-21T04:47:53.6788196Z         },
2026-06-21T04:47:53.6788448Z         "int": {
2026-06-21T04:47:53.6788749Z           "complete": false,
2026-06-21T04:47:53.6789091Z           "evidence": []
2026-06-21T04:47:53.6789482Z         },
2026-06-21T04:47:53.6789744Z         "unit": {
2026-06-21T04:47:53.6790030Z           "complete": true,
2026-06-21T04:47:53.6790307Z           "evidence": [
2026-06-21T04:47:53.6790565Z             {
2026-06-21T04:47:53.6790946Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T04:47:53.6791222Z               "line": 288
2026-06-21T04:47:53.6791488Z             },
2026-06-21T04:47:53.6791744Z             {
2026-06-21T04:47:53.6792121Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T04:47:53.6792408Z               "line": 325
2026-06-21T04:47:53.6792669Z             }
2026-06-21T04:47:53.6792931Z           ]
2026-06-21T04:47:53.6793303Z         }
2026-06-21T04:47:53.6793556Z       }
2026-06-21T04:47:53.6793818Z     },
2026-06-21T04:47:53.6794072Z     {
2026-06-21T04:47:53.6794360Z       "id": "REQ-DAEMON-9",
2026-06-21T04:47:53.6801335Z       "title": "Net-bind boot-race resilience: a daemon that comes up net-less (NetHost::start failed — e.g. the systemd unit autostarted before the network/DNS stack was ready, `Failed to create an address lookup service`) must SELF-HEAL — retry the net bring-up in the background with capped backoff and, on success, attach net to the broker + spawn the dispatcher/peer-pump (which today are gated on `net_up` at boot and so never start, leaving the node silently unreachable until a manual restart — kitsubito 2026-06-08). Status surfaces the net-less state honestly (a net-less broker renders as 'no connection', not only a pump-STALLED line with a bogus pre-boot heartbeat age). The installer's autostart unit waits for the network (`Wants=/After=network-online.target`) as belt-and-suspenders.",
2026-06-21T04:47:53.6801674Z       "requiredStages": [
2026-06-21T04:47:53.6801943Z         "impl",
2026-06-21T04:47:53.6802218Z         "unit"
2026-06-21T04:47:53.6802476Z       ],
2026-06-21T04:47:53.6802748Z       "stages": {
2026-06-21T04:47:53.6803005Z         "doc": {
2026-06-21T04:47:53.6803302Z           "complete": false,
2026-06-21T04:47:53.6803597Z           "evidence": []
2026-06-21T04:47:53.6803858Z         },
2026-06-21T04:47:53.6804135Z         "impl": {
2026-06-21T04:47:53.6804406Z           "complete": true,
2026-06-21T04:47:53.6804688Z           "evidence": [
2026-06-21T04:47:53.6804944Z             {
2026-06-21T04:47:53.6805343Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.6805629Z               "line": 276
2026-06-21T04:47:53.6805887Z             },
2026-06-21T04:47:53.6806154Z             {
2026-06-21T04:47:53.6806531Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.6806813Z               "line": 1153
2026-06-21T04:47:53.6807074Z             },
2026-06-21T04:47:53.6807330Z             {
2026-06-21T04:47:53.6807709Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.6807980Z               "line": 197
2026-06-21T04:47:53.6808248Z             },
2026-06-21T04:47:53.6808510Z             {
2026-06-21T04:47:53.6808901Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.6809379Z               "line": 344
2026-06-21T04:47:53.6809651Z             },
2026-06-21T04:47:53.6809917Z             {
2026-06-21T04:47:53.6810302Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.6810588Z               "line": 381
2026-06-21T04:47:53.6810850Z             },
2026-06-21T04:47:53.6811109Z             {
2026-06-21T04:47:53.6811433Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6811713Z               "line": 2075
2026-06-21T04:47:53.6811977Z             }
2026-06-21T04:47:53.6812234Z           ]
2026-06-21T04:47:53.6812494Z         },
2026-06-21T04:47:53.6812774Z         "int": {
2026-06-21T04:47:53.6813069Z           "complete": false,
2026-06-21T04:47:53.6813346Z           "evidence": []
2026-06-21T04:47:53.6813613Z         },
2026-06-21T04:47:53.6813885Z         "unit": {
2026-06-21T04:47:53.6814167Z           "complete": true,
2026-06-21T04:47:53.6814453Z           "evidence": [
2026-06-21T04:47:53.6814816Z             {
2026-06-21T04:47:53.6815192Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.6815481Z               "line": 1158
2026-06-21T04:47:53.6815770Z             },
2026-06-21T04:47:53.6816041Z             {
2026-06-21T04:47:53.6816375Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6816661Z               "line": 10580
2026-06-21T04:47:53.6816923Z             }
2026-06-21T04:47:53.6817181Z           ]
2026-06-21T04:47:53.6817439Z         }
2026-06-21T04:47:53.6817697Z       }
2026-06-21T04:47:53.6817957Z     },
2026-06-21T04:47:53.6818211Z     {
2026-06-21T04:47:53.6818503Z       "id": "REQ-DOCS-1",
2026-06-21T04:47:53.6819338Z       "title": "Dual-audience docs (human + AI dev-agent), markdown once / two depths",
2026-06-21T04:47:53.6819639Z       "requiredStages": [
2026-06-21T04:47:53.6819906Z         "doc",
2026-06-21T04:47:53.6820172Z         "impl"
2026-06-21T04:47:53.6820435Z       ],
2026-06-21T04:47:53.6820710Z       "stages": {
2026-06-21T04:47:53.6820973Z         "doc": {
2026-06-21T04:47:53.6821259Z           "complete": true,
2026-06-21T04:47:53.6821535Z           "evidence": [
2026-06-21T04:47:53.6821782Z             {
2026-06-21T04:47:53.6822116Z               "path": "docs-site/src/index.md",
2026-06-21T04:47:53.6822397Z               "line": 50
2026-06-21T04:47:53.6822650Z             }
2026-06-21T04:47:53.6822927Z           ]
2026-06-21T04:47:53.6823184Z         },
2026-06-21T04:47:53.6823448Z         "impl": {
2026-06-21T04:47:53.6823729Z           "complete": true,
2026-06-21T04:47:53.6824001Z           "evidence": [
2026-06-21T04:47:53.6824268Z             {
2026-06-21T04:47:53.6824668Z               "path": ".github/workflows/docs-publish.yml",
2026-06-21T04:47:53.6824955Z               "line": 12
2026-06-21T04:47:53.6825212Z             },
2026-06-21T04:47:53.6825474Z             {
2026-06-21T04:47:53.6825817Z               "path": "crates/xtask/src/main.rs",
2026-06-21T04:47:53.6826092Z               "line": 14
2026-06-21T04:47:53.6826354Z             }
2026-06-21T04:47:53.6826616Z           ]
2026-06-21T04:47:53.6826882Z         },
2026-06-21T04:47:53.6827149Z         "int": {
2026-06-21T04:47:53.6827450Z           "complete": false,
2026-06-21T04:47:53.6827717Z           "evidence": []
2026-06-21T04:47:53.6827985Z         },
2026-06-21T04:47:53.6828253Z         "unit": {
2026-06-21T04:47:53.6828541Z           "complete": false,
2026-06-21T04:47:53.6828824Z           "evidence": []
2026-06-21T04:47:53.6829159Z         }
2026-06-21T04:47:53.6829416Z       }
2026-06-21T04:47:53.6829674Z     },
2026-06-21T04:47:53.6829936Z     {
2026-06-21T04:47:53.6830213Z       "id": "REQ-DOCS-2",
2026-06-21T04:47:53.6830722Z       "title": "Sub-10-minute runnable killer quickstart per audience",
2026-06-21T04:47:53.6831018Z       "requiredStages": [
2026-06-21T04:47:53.6831280Z         "doc",
2026-06-21T04:47:53.6831548Z         "int"
2026-06-21T04:47:53.6831795Z       ],
2026-06-21T04:47:53.6832067Z       "stages": {
2026-06-21T04:47:53.6832333Z         "doc": {
2026-06-21T04:47:53.6832614Z           "complete": true,
2026-06-21T04:47:53.6832896Z           "evidence": [
2026-06-21T04:47:53.6833149Z             {
2026-06-21T04:47:53.6833696Z               "path": "docs-site/src/harness-contract/integration-checklist.md",
2026-06-21T04:47:53.6833960Z               "line": 3
2026-06-21T04:47:53.6834227Z             },
2026-06-21T04:47:53.6834481Z             {
2026-06-21T04:47:53.6834876Z               "path": "docs-site/src/quickstart/adapter.md",
2026-06-21T04:47:53.6835152Z               "line": 3
2026-06-21T04:47:53.6835415Z             },
2026-06-21T04:47:53.6835678Z             {
2026-06-21T04:47:53.6836087Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-21T04:47:53.6836373Z               "line": 3
2026-06-21T04:47:53.6836639Z             }
2026-06-21T04:47:53.6836899Z           ]
2026-06-21T04:47:53.6837156Z         },
2026-06-21T04:47:53.6837428Z         "impl": {
2026-06-21T04:47:53.6837714Z           "complete": false,
2026-06-21T04:47:53.6838096Z           "evidence": []
2026-06-21T04:47:53.6838358Z         },
2026-06-21T04:47:53.6838620Z         "int": {
2026-06-21T04:47:53.6838907Z           "complete": true,
2026-06-21T04:47:53.6839275Z           "evidence": [
2026-06-21T04:47:53.6839534Z             {
2026-06-21T04:47:53.6839924Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T04:47:53.6840205Z               "line": 14
2026-06-21T04:47:53.6840472Z             }
2026-06-21T04:47:53.6840731Z           ]
2026-06-21T04:47:53.6840987Z         },
2026-06-21T04:47:53.6841254Z         "unit": {
2026-06-21T04:47:53.6841550Z           "complete": false,
2026-06-21T04:47:53.6841939Z           "evidence": []
2026-06-21T04:47:53.6842188Z         }
2026-06-21T04:47:53.6842455Z       }
2026-06-21T04:47:53.6842708Z     },
2026-06-21T04:47:53.6842961Z     {
2026-06-21T04:47:53.6843242Z       "id": "REQ-DOCS-3",
2026-06-21T04:47:53.6843799Z       "title": "Diátaxis structure; one canonical way to do X",
2026-06-21T04:47:53.6844089Z       "requiredStages": [
2026-06-21T04:47:53.6844350Z         "doc"
2026-06-21T04:47:53.6844607Z       ],
2026-06-21T04:47:53.6844874Z       "stages": {
2026-06-21T04:47:53.6845131Z         "doc": {
2026-06-21T04:47:53.6845416Z           "complete": true,
2026-06-21T04:47:53.6845689Z           "evidence": [
2026-06-21T04:47:53.6845956Z             {
2026-06-21T04:47:53.6846294Z               "path": "docs-site/src/index.md",
2026-06-21T04:47:53.6846576Z               "line": 42
2026-06-21T04:47:53.6846839Z             }
2026-06-21T04:47:53.6847099Z           ]
2026-06-21T04:47:53.6847359Z         },
2026-06-21T04:47:53.6847645Z         "impl": {
2026-06-21T04:47:53.6847941Z           "complete": false,
2026-06-21T04:47:53.6848214Z           "evidence": []
2026-06-21T04:47:53.6848480Z         },
2026-06-21T04:47:53.6848738Z         "int": {
2026-06-21T04:47:53.6849101Z           "complete": false,
2026-06-21T04:47:53.6849382Z           "evidence": []
2026-06-21T04:47:53.6849661Z         },
2026-06-21T04:47:53.6849921Z         "unit": {
2026-06-21T04:47:53.6850207Z           "complete": false,
2026-06-21T04:47:53.6850488Z           "evidence": []
2026-06-21T04:47:53.6850751Z         }
2026-06-21T04:47:53.6851000Z       }
2026-06-21T04:47:53.6851262Z     },
2026-06-21T04:47:53.6851514Z     {
2026-06-21T04:47:53.6851800Z       "id": "REQ-DOCS-4",
2026-06-21T04:47:53.6852424Z       "title": "Agent-consumable layer (llms.txt, manifest schema, MCP, CLI help)",
2026-06-21T04:47:53.6852714Z       "requiredStages": [
2026-06-21T04:47:53.6852982Z         "doc",
2026-06-21T04:47:53.6853249Z         "impl",
2026-06-21T04:47:53.6853511Z         "unit"
2026-06-21T04:47:53.6853782Z       ],
2026-06-21T04:47:53.6854050Z       "stages": {
2026-06-21T04:47:53.6854312Z         "doc": {
2026-06-21T04:47:53.6854597Z           "complete": true,
2026-06-21T04:47:53.6854868Z           "evidence": [
2026-06-21T04:47:53.6855129Z             {
2026-06-21T04:47:53.6855467Z               "path": "docs/DOCS-STRATEGY.md",
2026-06-21T04:47:53.6855744Z               "line": 35
2026-06-21T04:47:53.6856020Z             }
2026-06-21T04:47:53.6856278Z           ]
2026-06-21T04:47:53.6856540Z         },
2026-06-21T04:47:53.6856807Z         "impl": {
2026-06-21T04:47:53.6857094Z           "complete": true,
2026-06-21T04:47:53.6857376Z           "evidence": [
2026-06-21T04:47:53.6857635Z             {
2026-06-21T04:47:53.6858029Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:53.6858301Z               "line": 746
2026-06-21T04:47:53.6858563Z             },
2026-06-21T04:47:53.6858825Z             {
2026-06-21T04:47:53.6859240Z               "path": "crates/xtask/src/main.rs",
2026-06-21T04:47:53.6859536Z               "line": 15
2026-06-21T04:47:53.6859798Z             }
2026-06-21T04:47:53.6860055Z           ]
2026-06-21T04:47:53.6860317Z         },
2026-06-21T04:47:53.6860577Z         "int": {
2026-06-21T04:47:53.6860873Z           "complete": false,
2026-06-21T04:47:53.6861287Z           "evidence": []
2026-06-21T04:47:53.6861555Z         },
2026-06-21T04:47:53.6861822Z         "unit": {
2026-06-21T04:47:53.6862112Z           "complete": true,
2026-06-21T04:47:53.6862394Z           "evidence": [
2026-06-21T04:47:53.6862660Z             {
2026-06-21T04:47:53.6863079Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:53.6863379Z               "line": 1682
2026-06-21T04:47:53.6863670Z             }
2026-06-21T04:47:53.6863956Z           ]
2026-06-21T04:47:53.6864238Z         }
2026-06-21T04:47:53.6864514Z       }
2026-06-21T04:47:53.6864777Z     },
2026-06-21T04:47:53.6865025Z     {
2026-06-21T04:47:53.6865309Z       "id": "REQ-DOCS-5",
2026-06-21T04:47:53.6866057Z       "title": "Anti-drift: rustdoc/schema/exports/CLI-help generated + CI-checked",
2026-06-21T04:47:53.6866357Z       "requiredStages": [
2026-06-21T04:47:53.6866629Z         "impl",
2026-06-21T04:47:53.6866885Z         "int"
2026-06-21T04:47:53.6867143Z       ],
2026-06-21T04:47:53.6867415Z       "stages": {
2026-06-21T04:47:53.6867673Z         "doc": {
2026-06-21T04:47:53.6867959Z           "complete": false,
2026-06-21T04:47:53.6868239Z           "evidence": []
2026-06-21T04:47:53.6868503Z         },
2026-06-21T04:47:53.6868765Z         "impl": {
2026-06-21T04:47:53.6869267Z           "complete": true,
2026-06-21T04:47:53.6869553Z           "evidence": [
2026-06-21T04:47:53.6869800Z             {
2026-06-21T04:47:53.6870197Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:53.6870474Z               "line": 747
2026-06-21T04:47:53.6870734Z             },
2026-06-21T04:47:53.6870994Z             {
2026-06-21T04:47:53.6871337Z               "path": "crates/xtask/src/main.rs",
2026-06-21T04:47:53.6871614Z               "line": 113
2026-06-21T04:47:53.6871876Z             }
2026-06-21T04:47:53.6872144Z           ]
2026-06-21T04:47:53.6872401Z         },
2026-06-21T04:47:53.6872667Z         "int": {
2026-06-21T04:47:53.6872949Z           "complete": true,
2026-06-21T04:47:53.6873239Z           "evidence": [
2026-06-21T04:47:53.6873496Z             {
2026-06-21T04:47:53.6873839Z               "path": ".github/workflows/ci.yml",
2026-06-21T04:47:53.6874122Z               "line": 175
2026-06-21T04:47:53.6874388Z             },
2026-06-21T04:47:53.6874636Z             {
2026-06-21T04:47:53.6875018Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:53.6875309Z               "line": 1719
2026-06-21T04:47:53.6875571Z             }
2026-06-21T04:47:53.6875822Z           ]
2026-06-21T04:47:53.6876082Z         },
2026-06-21T04:47:53.6876350Z         "unit": {
2026-06-21T04:47:53.6876650Z           "complete": false,
2026-06-21T04:47:53.6876936Z           "evidence": []
2026-06-21T04:47:53.6877194Z         }
2026-06-21T04:47:53.6877455Z       }
2026-06-21T04:47:53.6877708Z     },
2026-06-21T04:47:53.6877956Z     {
2026-06-21T04:47:53.6878242Z       "id": "REQ-DOCS-6",
2026-06-21T04:47:53.6879368Z       "title": "spt how-to <topic>: in-binary task-oriented agent instructions (anti-drift; quickstart prompts point agents at it)",
2026-06-21T04:47:53.6879673Z       "requiredStages": [
2026-06-21T04:47:53.6879945Z         "impl",
2026-06-21T04:47:53.6880213Z         "unit",
2026-06-21T04:47:53.6880466Z         "int"
2026-06-21T04:47:53.6880729Z       ],
2026-06-21T04:47:53.6880986Z       "stages": {
2026-06-21T04:47:53.6881261Z         "doc": {
2026-06-21T04:47:53.6881544Z           "complete": true,
2026-06-21T04:47:53.6881831Z           "evidence": [
2026-06-21T04:47:53.6882098Z             {
2026-06-21T04:47:53.6882508Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-21T04:47:53.6882789Z               "line": 4
2026-06-21T04:47:53.6883052Z             }
2026-06-21T04:47:53.6883314Z           ]
2026-06-21T04:47:53.6883572Z         },
2026-06-21T04:47:53.6883838Z         "impl": {
2026-06-21T04:47:53.6884133Z           "complete": true,
2026-06-21T04:47:53.6884395Z           "evidence": [
2026-06-21T04:47:53.6884652Z             {
2026-06-21T04:47:53.6885110Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6885400Z               "line": 5240
2026-06-21T04:47:53.6885658Z             }
2026-06-21T04:47:53.6885944Z           ]
2026-06-21T04:47:53.6886218Z         },
2026-06-21T04:47:53.6886477Z         "int": {
2026-06-21T04:47:53.6886771Z           "complete": true,
2026-06-21T04:47:53.6887051Z           "evidence": [
2026-06-21T04:47:53.6887319Z             {
2026-06-21T04:47:53.6887705Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T04:47:53.6887991Z               "line": 39
2026-06-21T04:47:53.6888263Z             }
2026-06-21T04:47:53.6888521Z           ]
2026-06-21T04:47:53.6888888Z         },
2026-06-21T04:47:53.6889235Z         "unit": {
2026-06-21T04:47:53.6889533Z           "complete": true,
2026-06-21T04:47:53.6889801Z           "evidence": [
2026-06-21T04:47:53.6890068Z             {
2026-06-21T04:47:53.6890406Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6890687Z               "line": 10742
2026-06-21T04:47:53.6890960Z             }
2026-06-21T04:47:53.6891211Z           ]
2026-06-21T04:47:53.6891474Z         }
2026-06-21T04:47:53.6891726Z       }
2026-06-21T04:47:53.6891987Z     },
2026-06-21T04:47:53.6892243Z     {
2026-06-21T04:47:53.6892529Z       "id": "REQ-ELEVATE-1",
2026-06-21T04:47:53.6902000Z       "title": "Cross-platform self-elevating re-launch for privilege-gated commands: a pure decision seam `decide_elevation_path(os, elevation, interactive_tty, has_display, has_pkexec, has_term_emulator) -> ElevatePath{AlreadyElevated, InlineSudo, UacWindow, Pkexec, TerminalEmulator, PrintHint}` selecting how to re-acquire privilege, and the per-OS impure launchers it dispatches — Windows UAC console (ShellExecuteW `runas` on the abs-exe + verbatim argv; the elevated child does the work, prints 'You can close this window', and pauses for a keypress; the original prints 'Elevated terminal launched…' and exits 0; NEVER pipes the child's stdout back across the privilege boundary), Linux desktop pkexec (preferred, native polkit GUI auth) else x-terminal-emulator -e sudo (fallback list x-terminal-emulator→gnome-terminal→konsole→xterm), the existing interactive-TTY inline sudo, and the headless/no-path floor that prints the absolute-path command. Reused by every gated command (not subnet-specific). Generalizes should_auto_elevate.",
2026-06-21T04:47:53.6902343Z       "requiredStages": [
2026-06-21T04:47:53.6902603Z         "doc",
2026-06-21T04:47:53.6902866Z         "impl",
2026-06-21T04:47:53.6903123Z         "unit"
2026-06-21T04:47:53.6903375Z       ],
2026-06-21T04:47:53.6903637Z       "stages": {
2026-06-21T04:47:53.6903895Z         "doc": {
2026-06-21T04:47:53.6904205Z           "complete": true,
2026-06-21T04:47:53.6904482Z           "evidence": [
2026-06-21T04:47:53.6904750Z             {
2026-06-21T04:47:53.6905046Z               "path": "CONTEXT.md",
2026-06-21T04:47:53.6905329Z               "line": 687
2026-06-21T04:47:53.6905596Z             }
2026-06-21T04:47:53.6905858Z           ]
2026-06-21T04:47:53.6906141Z         },
2026-06-21T04:47:53.6906398Z         "impl": {
2026-06-21T04:47:53.6906689Z           "complete": true,
2026-06-21T04:47:53.6906970Z           "evidence": [
2026-06-21T04:47:53.6907237Z             {
2026-06-21T04:47:53.6907574Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6907853Z               "line": 3572
2026-06-21T04:47:53.6908115Z             },
2026-06-21T04:47:53.6908369Z             {
2026-06-21T04:47:53.6908702Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6909059Z               "line": 3617
2026-06-21T04:47:53.6909326Z             },
2026-06-21T04:47:53.6909580Z             {
2026-06-21T04:47:53.6909919Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6910205Z               "line": 3679
2026-06-21T04:47:53.6910460Z             },
2026-06-21T04:47:53.6910725Z             {
2026-06-21T04:47:53.6911077Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T04:47:53.6911359Z               "line": 92
2026-06-21T04:47:53.6911731Z             },
2026-06-21T04:47:53.6911988Z             {
2026-06-21T04:47:53.6912356Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T04:47:53.6912637Z               "line": 148
2026-06-21T04:47:53.6912903Z             }
2026-06-21T04:47:53.6913168Z           ]
2026-06-21T04:47:53.6913426Z         },
2026-06-21T04:47:53.6913693Z         "int": {
2026-06-21T04:47:53.6913983Z           "complete": false,
2026-06-21T04:47:53.6914259Z           "evidence": []
2026-06-21T04:47:53.6914512Z         },
2026-06-21T04:47:53.6914784Z         "unit": {
2026-06-21T04:47:53.6915060Z           "complete": true,
2026-06-21T04:47:53.6915447Z           "evidence": [
2026-06-21T04:47:53.6915714Z             {
2026-06-21T04:47:53.6916066Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T04:47:53.6916348Z               "line": 442
2026-06-21T04:47:53.6916610Z             },
2026-06-21T04:47:53.6916872Z             {
2026-06-21T04:47:53.6917230Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T04:47:53.6917526Z               "line": 460
2026-06-21T04:47:53.6917792Z             }
2026-06-21T04:47:53.6918048Z           ]
2026-06-21T04:47:53.6918313Z         }
2026-06-21T04:47:53.6918571Z       }
2026-06-21T04:47:53.6918833Z     },
2026-06-21T04:47:53.6919172Z     {
2026-06-21T04:47:53.6919515Z       "id": "REQ-ENDPOINT-LIST-MERGE-LOCAL",
2026-06-21T04:47:53.6924706Z       "title": "`spt endpoint list` always merges this node's LOCAL (unadvertised) perches into the view; the `--local` flag is REMOVED (operator decision 2026-06-17). Rationale: `spt whoami` is a thin alias of `endpoint list` — a just-online agent running `whoami` must see its OWN perch, or it gets an omitted-self view ('chaos'). FIX: drop the `--local` flag + its `--detail` conflict test + the v0.10.0 REQ-PICKER-5 hint line (cli.rs:1678) + cmd_list_local; the bare list merges local perches into the subnet view; fix the whoami alias path accordingly. Run `cargo run -p xtask -- gen` (docs-drift, DEFAULT target). (v0.12.1)",
2026-06-21T04:47:53.6925044Z       "requiredStages": [
2026-06-21T04:47:53.6925306Z         "doc",
2026-06-21T04:47:53.6925574Z         "impl",
2026-06-21T04:47:53.6925832Z         "unit"
2026-06-21T04:47:53.6926093Z       ],
2026-06-21T04:47:53.6926354Z       "stages": {
2026-06-21T04:47:53.6926621Z         "doc": {
2026-06-21T04:47:53.6926908Z           "complete": true,
2026-06-21T04:47:53.6927184Z           "evidence": [
2026-06-21T04:47:53.6927447Z             {
2026-06-21T04:47:53.6927742Z               "path": "CONTEXT.md",
2026-06-21T04:47:53.6928028Z               "line": 711
2026-06-21T04:47:53.6928280Z             }
2026-06-21T04:47:53.6928562Z           ]
2026-06-21T04:47:53.6928813Z         },
2026-06-21T04:47:53.6929174Z         "impl": {
2026-06-21T04:47:53.6929465Z           "complete": true,
2026-06-21T04:47:53.6929751Z           "evidence": [
2026-06-21T04:47:53.6930014Z             {
2026-06-21T04:47:53.6930343Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6930644Z               "line": 1721
2026-06-21T04:47:53.6930905Z             },
2026-06-21T04:47:53.6931162Z             {
2026-06-21T04:47:53.6931495Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6931774Z               "line": 3125
2026-06-21T04:47:53.6932042Z             },
2026-06-21T04:47:53.6932304Z             {
2026-06-21T04:47:53.6932633Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6932914Z               "line": 3134
2026-06-21T04:47:53.6933186Z             }
2026-06-21T04:47:53.6933443Z           ]
2026-06-21T04:47:53.6933695Z         },
2026-06-21T04:47:53.6933972Z         "int": {
2026-06-21T04:47:53.6934266Z           "complete": false,
2026-06-21T04:47:53.6934555Z           "evidence": []
2026-06-21T04:47:53.6934818Z         },
2026-06-21T04:47:53.6935084Z         "unit": {
2026-06-21T04:47:53.6935370Z           "complete": true,
2026-06-21T04:47:53.6935651Z           "evidence": [
2026-06-21T04:47:53.6935919Z             {
2026-06-21T04:47:53.6936363Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6936649Z               "line": 7950
2026-06-21T04:47:53.6936910Z             },
2026-06-21T04:47:53.6937186Z             {
2026-06-21T04:47:53.6937515Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6937797Z               "line": 7991
2026-06-21T04:47:53.6938068Z             }
2026-06-21T04:47:53.6938327Z           ]
2026-06-21T04:47:53.6938588Z         }
2026-06-21T04:47:53.6938840Z       }
2026-06-21T04:47:53.6939192Z     },
2026-06-21T04:47:53.6939462Z     {
2026-06-21T04:47:53.6939777Z       "id": "REQ-ENDPOINT-PURGE",
2026-06-21T04:47:53.6953395Z       "title": "`spt endpoint purge <id>` fully removes an endpoint AND every record keyed on it — the formal teardown devs/CI need for clean test setup/reset. NOT consent-gated (a local dev/test op — no peer consent). OFFLINE-ONLY: refuses while the endpoint is online / daemon-hosted (deleting records out from under a live host risks the daemon re-creating or re-hosting mid-purge); `--force` STOPS it first (endpoint stop → wait for the daemon reconcile to un-host + reap the Psyche) THEN purges. Confirms interactively unless `--yes` (the CI path). Refuses purging the CALLER's OWN running id. All LOCAL — purge reaches only THIS node's records; a remote endpoint's records can't be touched, and its subnet-registry rows decay via the epoch-lease eviction (REQ-HAZARD-REGISTRY-DECAY). Removes: (1) the perch dir TREE recursively — owlery/<id>/ incl every nested {id}-psyche / {id}-w* / shells child (info.json, ready marker, sessions.log ledger, spool.db, inbox, .idle/.more-done sentinels, auth token); (2) the registry address (registry::unregister_address); (3) the context store — ContextStore::remove_endpoint(id): the a-<id> branch+worktree + the <id>/ rows from every p-<project> branch (the same fn `fork --delete-source` already uses); (4) node-local trust rows keyed on the id — access.json + visibility.json. Reuse-heavy: it is `fork --delete-source` generalized (recursive perch remove + unregister + remove_endpoint) + the trust-record cleanup; `endpoint rename` already enumerates the same record set + uses the same offline-only gate. (v0.12.0)",
2026-06-21T04:47:53.6953914Z       "requiredStages": [
2026-06-21T04:47:53.6954186Z         "doc",
2026-06-21T04:47:53.6954453Z         "impl",
2026-06-21T04:47:53.6954712Z         "unit",
2026-06-21T04:47:53.6954974Z         "int"
2026-06-21T04:47:53.6955234Z       ],
2026-06-21T04:47:53.6955498Z       "stages": {
2026-06-21T04:47:53.6955766Z         "doc": {
2026-06-21T04:47:53.6956062Z           "complete": true,
2026-06-21T04:47:53.6956348Z           "evidence": [
2026-06-21T04:47:53.6956644Z             {
2026-06-21T04:47:53.6956949Z               "path": "CONTEXT.md",
2026-06-21T04:47:53.6957226Z               "line": 163
2026-06-21T04:47:53.6957498Z             }
2026-06-21T04:47:53.6957754Z           ]
2026-06-21T04:47:53.6958020Z         },
2026-06-21T04:47:53.6958293Z         "impl": {
2026-06-21T04:47:53.6958588Z           "complete": true,
2026-06-21T04:47:53.6958874Z           "evidence": [
2026-06-21T04:47:53.6959227Z             {
2026-06-21T04:47:53.6959627Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T04:47:53.6959913Z               "line": 105
2026-06-21T04:47:53.6960181Z             },
2026-06-21T04:47:53.6960451Z             {
2026-06-21T04:47:53.6960769Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6961059Z               "line": 7219
2026-06-21T04:47:53.6961316Z             }
2026-06-21T04:47:53.6961578Z           ]
2026-06-21T04:47:53.6961836Z         },
2026-06-21T04:47:53.6962098Z         "int": {
2026-06-21T04:47:53.6962399Z           "complete": true,
2026-06-21T04:47:53.6962668Z           "evidence": [
2026-06-21T04:47:53.6962930Z             {
2026-06-21T04:47:53.6963261Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6963549Z               "line": 7384
2026-06-21T04:47:53.6963807Z             }
2026-06-21T04:47:53.6964060Z           ]
2026-06-21T04:47:53.6964441Z         },
2026-06-21T04:47:53.6964704Z         "unit": {
2026-06-21T04:47:53.6964994Z           "complete": true,
2026-06-21T04:47:53.6965272Z           "evidence": [
2026-06-21T04:47:53.6965530Z             {
2026-06-21T04:47:53.6965852Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6966130Z               "line": 7355
2026-06-21T04:47:53.6966411Z             }
2026-06-21T04:47:53.6966674Z           ]
2026-06-21T04:47:53.6966922Z         }
2026-06-21T04:47:53.6967180Z       }
2026-06-21T04:47:53.6967443Z     },
2026-06-21T04:47:53.6967699Z     {
2026-06-21T04:47:53.6968034Z       "id": "REQ-ENDPOINT-STOP-OFFLINE",
2026-06-21T04:47:53.6972015Z       "title": "H3: `spt endpoint stop <id>` marks the endpoint OFFLINE (alive=false), not merely de-readied. cmd_stop (cli.rs:2994-3010) removes the ready marker + unregisters the address but does NOT set status offline, so a stopped daemon-hosted endpoint still reports alive=true (status=online latch). FIX: add set_status(perch, STATUS_OFFLINE) to cmd_stop — folds with B2 (same setter). Unit: stop → is_perch_alive=false / alive=false. (v0.12.0)",
2026-06-21T04:47:53.6972321Z       "requiredStages": [
2026-06-21T04:47:53.6972588Z         "impl",
2026-06-21T04:47:53.6972845Z         "unit"
2026-06-21T04:47:53.6973107Z       ],
2026-06-21T04:47:53.6973379Z       "stages": {
2026-06-21T04:47:53.6973641Z         "doc": {
2026-06-21T04:47:53.6973930Z           "complete": false,
2026-06-21T04:47:53.6974210Z           "evidence": []
2026-06-21T04:47:53.6974472Z         },
2026-06-21T04:47:53.6974738Z         "impl": {
2026-06-21T04:47:53.6975030Z           "complete": true,
2026-06-21T04:47:53.6975330Z           "evidence": [
2026-06-21T04:47:53.6975592Z             {
2026-06-21T04:47:53.6975931Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6976207Z               "line": 3165
2026-06-21T04:47:53.6976473Z             }
2026-06-21T04:47:53.6976739Z           ]
2026-06-21T04:47:53.6977010Z         },
2026-06-21T04:47:53.6977330Z         "int": {
2026-06-21T04:47:53.6977615Z           "complete": false,
2026-06-21T04:47:53.6977887Z           "evidence": []
2026-06-21T04:47:53.6978150Z         },
2026-06-21T04:47:53.6978421Z         "unit": {
2026-06-21T04:47:53.6978708Z           "complete": true,
2026-06-21T04:47:53.6979061Z           "evidence": [
2026-06-21T04:47:53.6979322Z             {
2026-06-21T04:47:53.6979647Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.6979938Z               "line": 7331
2026-06-21T04:47:53.6980195Z             }
2026-06-21T04:47:53.6980456Z           ]
2026-06-21T04:47:53.6980709Z         }
2026-06-21T04:47:53.6980977Z       }
2026-06-21T04:47:53.6981249Z     },
2026-06-21T04:47:53.6981505Z     {
2026-06-21T04:47:53.6981793Z       "id": "REQ-EP-1",
2026-06-21T04:47:53.6982204Z       "title": "Day-one endpoint types; open type system",
2026-06-21T04:47:53.6982509Z       "requiredStages": [
2026-06-21T04:47:53.6982771Z         "impl",
2026-06-21T04:47:53.6983037Z         "unit"
2026-06-21T04:47:53.6983305Z       ],
2026-06-21T04:47:53.6983571Z       "stages": {
2026-06-21T04:47:53.6983835Z         "doc": {
2026-06-21T04:47:53.6984126Z           "complete": false,
2026-06-21T04:47:53.6984410Z           "evidence": []
2026-06-21T04:47:53.6984669Z         },
2026-06-21T04:47:53.6984941Z         "impl": {
2026-06-21T04:47:53.6985232Z           "complete": true,
2026-06-21T04:47:53.6985514Z           "evidence": [
2026-06-21T04:47:53.6985776Z             {
2026-06-21T04:47:53.6986167Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T04:47:53.6986457Z               "line": 77
2026-06-21T04:47:53.6986716Z             },
2026-06-21T04:47:53.6986991Z             {
2026-06-21T04:47:53.6987371Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T04:47:53.6987652Z               "line": 94
2026-06-21T04:47:53.6987914Z             }
2026-06-21T04:47:53.6988166Z           ]
2026-06-21T04:47:53.6988433Z         },
2026-06-21T04:47:53.6988691Z         "int": {
2026-06-21T04:47:53.6989173Z           "complete": false,
2026-06-21T04:47:53.6989464Z           "evidence": []
2026-06-21T04:47:53.6989720Z         },
2026-06-21T04:47:53.6989987Z         "unit": {
2026-06-21T04:47:53.6990269Z           "complete": true,
2026-06-21T04:47:53.6990550Z           "evidence": [
2026-06-21T04:47:53.6990808Z             {
2026-06-21T04:47:53.6991189Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T04:47:53.6991466Z               "line": 161
2026-06-21T04:47:53.6991728Z             },
2026-06-21T04:47:53.6991993Z             {
2026-06-21T04:47:53.6992377Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T04:47:53.6992769Z               "line": 178
2026-06-21T04:47:53.6993021Z             }
2026-06-21T04:47:53.6993278Z           ]
2026-06-21T04:47:53.6993536Z         }
2026-06-21T04:47:53.6993789Z       }
2026-06-21T04:47:53.6994052Z     },
2026-06-21T04:47:53.6994300Z     {
2026-06-21T04:47:53.6994590Z       "id": "REQ-EP-2",
2026-06-21T04:47:53.6995121Z       "title": "Agent endpoints vs Shells distinction in the type model",
2026-06-21T04:47:53.6995417Z       "requiredStages": [
2026-06-21T04:47:53.6995688Z         "impl",
2026-06-21T04:47:53.6995951Z         "unit"
2026-06-21T04:47:53.6996212Z       ],
2026-06-21T04:47:53.6996484Z       "stages": {
2026-06-21T04:47:53.6996756Z         "doc": {
2026-06-21T04:47:53.6997046Z           "complete": false,
2026-06-21T04:47:53.6997337Z           "evidence": []
2026-06-21T04:47:53.6997603Z         },
2026-06-21T04:47:53.6997873Z         "impl": {
2026-06-21T04:47:53.6998164Z           "complete": true,
2026-06-21T04:47:53.6998421Z           "evidence": [
2026-06-21T04:47:53.6998688Z             {
2026-06-21T04:47:53.6999152Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T04:47:53.6999433Z               "line": 114
2026-06-21T04:47:53.6999704Z             },
2026-06-21T04:47:53.6999952Z             {
2026-06-21T04:47:53.7000336Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T04:47:53.7000618Z               "line": 131
2026-06-21T04:47:53.7000876Z             },
2026-06-21T04:47:53.7001134Z             {
2026-06-21T04:47:53.7001515Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T04:47:53.7001801Z               "line": 138
2026-06-21T04:47:53.7002059Z             }
2026-06-21T04:47:53.7002322Z           ]
2026-06-21T04:47:53.7002586Z         },
2026-06-21T04:47:53.7002856Z         "int": {
2026-06-21T04:47:53.7003138Z           "complete": false,
2026-06-21T04:47:53.7003419Z           "evidence": []
2026-06-21T04:47:53.7003682Z         },
2026-06-21T04:47:53.7003949Z         "unit": {
2026-06-21T04:47:53.7004240Z           "complete": true,
2026-06-21T04:47:53.7004521Z           "evidence": [
2026-06-21T04:47:53.7004787Z             {
2026-06-21T04:47:53.7005170Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T04:47:53.7005444Z               "line": 190
2026-06-21T04:47:53.7005704Z             },
2026-06-21T04:47:53.7005967Z             {
2026-06-21T04:47:53.7006353Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T04:47:53.7010464Z               "line": 208
2026-06-21T04:47:53.7010774Z             },
2026-06-21T04:47:53.7011036Z             {
2026-06-21T04:47:53.7011441Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T04:47:53.7011723Z               "line": 221
2026-06-21T04:47:53.7011990Z             }
2026-06-21T04:47:53.7012258Z           ]
2026-06-21T04:47:53.7012519Z         }
2026-06-21T04:47:53.7012776Z       }
2026-06-21T04:47:53.7013033Z     },
2026-06-21T04:47:53.7013284Z     {
2026-06-21T04:47:53.7013574Z       "id": "REQ-EP-3",
2026-06-21T04:47:53.7014190Z       "title": "Messaging payloads carry typed operation commands + file blobs",
2026-06-21T04:47:53.7014495Z       "requiredStages": [
2026-06-21T04:47:53.7014766Z         "impl",
2026-06-21T04:47:53.7015028Z         "unit"
2026-06-21T04:47:53.7015280Z       ],
2026-06-21T04:47:53.7015557Z       "stages": {
2026-06-21T04:47:53.7015980Z         "doc": {
2026-06-21T04:47:53.7016274Z           "complete": false,
2026-06-21T04:47:53.7016551Z           "evidence": []
2026-06-21T04:47:53.7016809Z         },
2026-06-21T04:47:53.7017080Z         "impl": {
2026-06-21T04:47:53.7017362Z           "complete": true,
2026-06-21T04:47:53.7017643Z           "evidence": [
2026-06-21T04:47:53.7017900Z             {
2026-06-21T04:47:53.7018282Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T04:47:53.7018566Z               "line": 31
2026-06-21T04:47:53.7018817Z             },
2026-06-21T04:47:53.7019164Z             {
2026-06-21T04:47:53.7019546Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T04:47:53.7019938Z               "line": 49
2026-06-21T04:47:53.7020204Z             }
2026-06-21T04:47:53.7020461Z           ]
2026-06-21T04:47:53.7020724Z         },
2026-06-21T04:47:53.7020987Z         "int": {
2026-06-21T04:47:53.7021288Z           "complete": false,
2026-06-21T04:47:53.7021563Z           "evidence": []
2026-06-21T04:47:53.7021834Z         },
2026-06-21T04:47:53.7022101Z         "unit": {
2026-06-21T04:47:53.7022377Z           "complete": true,
2026-06-21T04:47:53.7022650Z           "evidence": [
2026-06-21T04:47:53.7022907Z             {
2026-06-21T04:47:53.7023298Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T04:47:53.7023574Z               "line": 156
2026-06-21T04:47:53.7023840Z             },
2026-06-21T04:47:53.7024096Z             {
2026-06-21T04:47:53.7024468Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T04:47:53.7024750Z               "line": 164
2026-06-21T04:47:53.7025012Z             },
2026-06-21T04:47:53.7025278Z             {
2026-06-21T04:47:53.7025660Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T04:47:53.7025951Z               "line": 177
2026-06-21T04:47:53.7026218Z             },
2026-06-21T04:47:53.7026475Z             {
2026-06-21T04:47:53.7026853Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T04:47:53.7027139Z               "line": 200
2026-06-21T04:47:53.7027393Z             },
2026-06-21T04:47:53.7027650Z             {
2026-06-21T04:47:53.7028036Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T04:47:53.7028313Z               "line": 216
2026-06-21T04:47:53.7028571Z             },
2026-06-21T04:47:53.7028838Z             {
2026-06-21T04:47:53.7029293Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T04:47:53.7029578Z               "line": 233
2026-06-21T04:47:53.7029830Z             }
2026-06-21T04:47:53.7030087Z           ]
2026-06-21T04:47:53.7030350Z         }
2026-06-21T04:47:53.7030602Z       }
2026-06-21T04:47:53.7030865Z     },
2026-06-21T04:47:53.7031114Z     {
2026-06-21T04:47:53.7031399Z       "id": "REQ-EP-4",
2026-06-21T04:47:53.7031857Z       "title": "PresenceChannel broker endpoint (seam day-one)",
2026-06-21T04:47:53.7032152Z       "requiredStages": [
2026-06-21T04:47:53.7032423Z         "impl",
2026-06-21T04:47:53.7032690Z         "unit"
2026-06-21T04:47:53.7032956Z       ],
2026-06-21T04:47:53.7033224Z       "stages": {
2026-06-21T04:47:53.7033495Z         "doc": {
2026-06-21T04:47:53.7033778Z           "complete": false,
2026-06-21T04:47:53.7034046Z           "evidence": []
2026-06-21T04:47:53.7034310Z         },
2026-06-21T04:47:53.7034574Z         "impl": {
2026-06-21T04:47:53.7034861Z           "complete": true,
2026-06-21T04:47:53.7035132Z           "evidence": [
2026-06-21T04:47:53.7035400Z             {
2026-06-21T04:47:53.7035753Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T04:47:53.7036038Z               "line": 764
2026-06-21T04:47:53.7036311Z             },
2026-06-21T04:47:53.7036569Z             {
2026-06-21T04:47:53.7036946Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T04:47:53.7037225Z               "line": 1127
2026-06-21T04:47:53.7037490Z             },
2026-06-21T04:47:53.7037747Z             {
2026-06-21T04:47:53.7038119Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.7038516Z               "line": 2117
2026-06-21T04:47:53.7038773Z             },
2026-06-21T04:47:53.7039112Z             {
2026-06-21T04:47:53.7039470Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T04:47:53.7039768Z               "line": 118
2026-06-21T04:47:53.7040027Z             },
2026-06-21T04:47:53.7040280Z             {
2026-06-21T04:47:53.7040637Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T04:47:53.7040910Z               "line": 699
2026-06-21T04:47:53.7041177Z             },
2026-06-21T04:47:53.7041435Z             {
2026-06-21T04:47:53.7041787Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T04:47:53.7042217Z               "line": 836
2026-06-21T04:47:53.7042468Z             },
2026-06-21T04:47:53.7042731Z             {
2026-06-21T04:47:53.7043112Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T04:47:53.7043393Z               "line": 271
2026-06-21T04:47:53.7043713Z             },
2026-06-21T04:47:53.7043985Z             {
2026-06-21T04:47:53.7044366Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T04:47:53.7044648Z               "line": 458
2026-06-21T04:47:53.7044908Z             },
2026-06-21T04:47:53.7045168Z             {
2026-06-21T04:47:53.7045555Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T04:47:53.7045841Z               "line": 1246
2026-06-21T04:47:53.7046107Z             }
2026-06-21T04:47:53.7046369Z           ]
2026-06-21T04:47:53.7046623Z         },
2026-06-21T04:47:53.7046899Z         "int": {
2026-06-21T04:47:53.7047187Z           "complete": false,
2026-06-21T04:47:53.7047468Z           "evidence": []
2026-06-21T04:47:53.7047733Z         },
2026-06-21T04:47:53.7047992Z         "unit": {
2026-06-21T04:47:53.7048278Z           "complete": true,
2026-06-21T04:47:53.7048551Z           "evidence": [
2026-06-21T04:47:53.7048808Z             {
2026-06-21T04:47:53.7049242Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T04:47:53.7049533Z               "line": 927
2026-06-21T04:47:53.7049781Z             },
2026-06-21T04:47:53.7050044Z             {
2026-06-21T04:47:53.7050436Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-21T04:47:53.7050703Z               "line": 76
2026-06-21T04:47:53.7050960Z             },
2026-06-21T04:47:53.7051226Z             {
2026-06-21T04:47:53.7051619Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-21T04:47:53.7051899Z               "line": 147
2026-06-21T04:47:53.7052166Z             }
2026-06-21T04:47:53.7052419Z           ]
2026-06-21T04:47:53.7052671Z         }
2026-06-21T04:47:53.7052930Z       }
2026-06-21T04:47:53.7053180Z     },
2026-06-21T04:47:53.7053433Z     {
2026-06-21T04:47:53.7053715Z       "id": "REQ-EP-5",
2026-06-21T04:47:53.7055843Z       "title": "Concrete shell instantiation model: spawn-mints-instance (vs relink/online), registered-on-node permission + broadcast-is-discovery, per-shell require_approval gate, max_instances_per_owner + over_cap, instance aliasing, discovery scope",
2026-06-21T04:47:53.7056158Z       "requiredStages": [
2026-06-21T04:47:53.7056425Z         "impl",
2026-06-21T04:47:53.7056692Z         "unit",
2026-06-21T04:47:53.7056948Z         "int"
2026-06-21T04:47:53.7057207Z       ],
2026-06-21T04:47:53.7057474Z       "stages": {
2026-06-21T04:47:53.7057737Z         "doc": {
2026-06-21T04:47:53.7058023Z           "complete": false,
2026-06-21T04:47:53.7058302Z           "evidence": []
2026-06-21T04:47:53.7058567Z         },
2026-06-21T04:47:53.7058829Z         "impl": {
2026-06-21T04:47:53.7059201Z           "complete": true,
2026-06-21T04:47:53.7059477Z           "evidence": [
2026-06-21T04:47:53.7059735Z             {
2026-06-21T04:47:53.7060150Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.7060427Z               "line": 367
2026-06-21T04:47:53.7060688Z             },
2026-06-21T04:47:53.7060936Z             {
2026-06-21T04:47:53.7061325Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T04:47:53.7061725Z               "line": 18
2026-06-21T04:47:53.7061992Z             },
2026-06-21T04:47:53.7062264Z             {
2026-06-21T04:47:53.7062636Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T04:47:53.7062917Z               "line": 63
2026-06-21T04:47:53.7063180Z             },
2026-06-21T04:47:53.7063443Z             {
2026-06-21T04:47:53.7063832Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T04:47:53.7064113Z               "line": 92
2026-06-21T04:47:53.7064375Z             },
2026-06-21T04:47:53.7064637Z             {
2026-06-21T04:47:53.7065029Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T04:47:53.7065411Z               "line": 167
2026-06-21T04:47:53.7065673Z             },
2026-06-21T04:47:53.7065938Z             {
2026-06-21T04:47:53.7066317Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T04:47:53.7066598Z               "line": 179
2026-06-21T04:47:53.7066870Z             },
2026-06-21T04:47:53.7067123Z             {
2026-06-21T04:47:53.7067509Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.7067824Z               "line": 114
2026-06-21T04:47:53.7068091Z             },
2026-06-21T04:47:53.7068353Z             {
2026-06-21T04:47:53.7068738Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T04:47:53.7069079Z               "line": 22
2026-06-21T04:47:53.7069347Z             },
2026-06-21T04:47:53.7069609Z             {
2026-06-21T04:47:53.7069986Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T04:47:53.7070271Z               "line": 145
2026-06-21T04:47:53.7070539Z             },
2026-06-21T04:47:53.7070806Z             {
2026-06-21T04:47:53.7071183Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T04:47:53.7071453Z               "line": 174
2026-06-21T04:47:53.7071703Z             },
2026-06-21T04:47:53.7071960Z             {
2026-06-21T04:47:53.7072346Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T04:47:53.7072628Z               "line": 196
2026-06-21T04:47:53.7072895Z             },
2026-06-21T04:47:53.7073157Z             {
2026-06-21T04:47:53.7073549Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T04:47:53.7073834Z               "line": 221
2026-06-21T04:47:53.7074093Z             },
2026-06-21T04:47:53.7074354Z             {
2026-06-21T04:47:53.7074726Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T04:47:53.7075007Z               "line": 247
2026-06-21T04:47:53.7075260Z             },
2026-06-21T04:47:53.7075522Z             {
2026-06-21T04:47:53.7075909Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T04:47:53.7076185Z               "line": 270
2026-06-21T04:47:53.7076446Z             },
2026-06-21T04:47:53.7076701Z             {
2026-06-21T04:47:53.7077073Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:53.7077345Z               "line": 104
2026-06-21T04:47:53.7077607Z             },
2026-06-21T04:47:53.7077861Z             {
2026-06-21T04:47:53.7078189Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.7078471Z               "line": 6068
2026-06-21T04:47:53.7078737Z             },
2026-06-21T04:47:53.7079076Z             {
2026-06-21T04:47:53.7079408Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.7079696Z               "line": 6202
2026-06-21T04:47:53.7079968Z             },
2026-06-21T04:47:53.7080227Z             {
2026-06-21T04:47:53.7080556Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.7080837Z               "line": 6368
2026-06-21T04:47:53.7081109Z             },
2026-06-21T04:47:53.7081376Z             {
2026-06-21T04:47:53.7081710Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.7081989Z               "line": 6896
2026-06-21T04:47:53.7082244Z             }
2026-06-21T04:47:53.7082506Z           ]
2026-06-21T04:47:53.7082770Z         },
2026-06-21T04:47:53.7083146Z         "int": {
2026-06-21T04:47:53.7083417Z           "complete": true,
2026-06-21T04:47:53.7083690Z           "evidence": [
2026-06-21T04:47:53.7083953Z             {
2026-06-21T04:47:53.7084357Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T04:47:53.7084639Z               "line": 16
2026-06-21T04:47:53.7084890Z             },
2026-06-21T04:47:53.7085161Z             {
2026-06-21T04:47:53.7085515Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T04:47:53.7085801Z               "line": 15
2026-06-21T04:47:53.7086072Z             }
2026-06-21T04:47:53.7086335Z           ]
2026-06-21T04:47:53.7086592Z         },
2026-06-21T04:47:53.7086964Z         "unit": {
2026-06-21T04:47:53.7087257Z           "complete": true,
2026-06-21T04:47:53.7087524Z           "evidence": [
2026-06-21T04:47:53.7087786Z             {
2026-06-21T04:47:53.7088172Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T04:47:53.7088454Z               "line": 246
2026-06-21T04:47:53.7088721Z             },
2026-06-21T04:47:53.7089046Z             {
2026-06-21T04:47:53.7089441Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T04:47:53.7089713Z               "line": 306
2026-06-21T04:47:53.7089978Z             },
2026-06-21T04:47:53.7090242Z             {
2026-06-21T04:47:53.7090614Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T04:47:53.7090900Z               "line": 363
2026-06-21T04:47:53.7091158Z             },
2026-06-21T04:47:53.7091420Z             {
2026-06-21T04:47:53.7091802Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T04:47:53.7092073Z               "line": 286
2026-06-21T04:47:53.7092337Z             },
2026-06-21T04:47:53.7092597Z             {
2026-06-21T04:47:53.7092977Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T04:47:53.7093249Z               "line": 338
2026-06-21T04:47:53.7093516Z             },
2026-06-21T04:47:53.7093772Z             {
2026-06-21T04:47:53.7094145Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:53.7094431Z               "line": 783
2026-06-21T04:47:53.7094688Z             },
2026-06-21T04:47:53.7094954Z             {
2026-06-21T04:47:53.7095302Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.7095580Z               "line": 8751
2026-06-21T04:47:53.7095832Z             },
2026-06-21T04:47:53.7096090Z             {
2026-06-21T04:47:53.7096419Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.7096690Z               "line": 8904
2026-06-21T04:47:53.7096957Z             },
2026-06-21T04:47:53.7097214Z             {
2026-06-21T04:47:53.7097538Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.7097821Z               "line": 9493
2026-06-21T04:47:53.7098089Z             },
2026-06-21T04:47:53.7098356Z             {
2026-06-21T04:47:53.7098681Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.7099047Z               "line": 9609
2026-06-21T04:47:53.7099296Z             }
2026-06-21T04:47:53.7099567Z           ]
2026-06-21T04:47:53.7099824Z         }
2026-06-21T04:47:53.7100081Z       }
2026-06-21T04:47:53.7100334Z     },
2026-06-21T04:47:53.7100586Z     {
2026-06-21T04:47:53.7100869Z       "id": "REQ-EP-6",
2026-06-21T04:47:53.7105200Z       "title": "Gateway type acceptance: a Gateway-typed perch binds (api bind --type, open type system — un-hardcode the live_agent default), advertises/addressable like any endpoint, owns shells (owner validation not agent-family-gated), subscribes to digests, and is the user-msg identity gate's user-backed origin (REQ-MSG-5); in-tree mock-gateway fixture (R-DOCS-2 pattern, no downstream adapter code). Cross-node WAN Gateway-origin (registry endpoint_type trust) tracked by REQ-MSG-6",
2026-06-21T04:47:53.7105524Z       "requiredStages": [
2026-06-21T04:47:53.7105792Z         "doc",
2026-06-21T04:47:53.7106054Z         "impl",
2026-06-21T04:47:53.7106330Z         "unit"
2026-06-21T04:47:53.7106582Z       ],
2026-06-21T04:47:53.7106984Z       "stages": {
2026-06-21T04:47:53.7107245Z         "doc": {
2026-06-21T04:47:53.7107531Z           "complete": true,
2026-06-21T04:47:53.7107808Z           "evidence": [
2026-06-21T04:47:53.7108055Z             {
2026-06-21T04:47:53.7108359Z               "path": "CONTEXT.md",
2026-06-21T04:47:53.7108639Z               "line": 227
2026-06-21T04:47:53.7108906Z             }
2026-06-21T04:47:53.7109236Z           ]
2026-06-21T04:47:53.7109488Z         },
2026-06-21T04:47:53.7109759Z         "impl": {
2026-06-21T04:47:53.7110045Z           "complete": true,
2026-06-21T04:47:53.7110327Z           "evidence": [
2026-06-21T04:47:53.7110589Z             {
2026-06-21T04:47:53.7111050Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:53.7111334Z               "line": 212
2026-06-21T04:47:53.7111606Z             }
2026-06-21T04:47:53.7111864Z           ]
2026-06-21T04:47:53.7112117Z         },
2026-06-21T04:47:53.7112379Z         "int": {
2026-06-21T04:47:53.7112664Z           "complete": true,
2026-06-21T04:47:53.7112941Z           "evidence": [
2026-06-21T04:47:53.7113208Z             {
2026-06-21T04:47:53.7113569Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-21T04:47:53.7113858Z               "line": 18
2026-06-21T04:47:53.7114117Z             }
2026-06-21T04:47:53.7114393Z           ]
2026-06-21T04:47:53.7114646Z         },
2026-06-21T04:47:53.7114922Z         "unit": {
2026-06-21T04:47:53.7115212Z           "complete": true,
2026-06-21T04:47:53.7115489Z           "evidence": [
2026-06-21T04:47:53.7115746Z             {
2026-06-21T04:47:53.7116138Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T04:47:53.7116437Z               "line": 556
2026-06-21T04:47:53.7116695Z             },
2026-06-21T04:47:53.7116953Z             {
2026-06-21T04:47:53.7117314Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:53.7117596Z               "line": 904
2026-06-21T04:47:53.7117854Z             }
2026-06-21T04:47:53.7118111Z           ]
2026-06-21T04:47:53.7118377Z         }
2026-06-21T04:47:53.7118625Z       }
2026-06-21T04:47:53.7118891Z     },
2026-06-21T04:47:53.7119229Z     {
2026-06-21T04:47:53.7119514Z       "id": "REQ-EP-7",
2026-06-21T04:47:53.7124320Z       "title": "Durable live-role.md: a per-agent broad-purpose statement in tracked/agents/<id>/ beside live-context.md (replicates with the mind on the same a-<id> branch); renders FIRST at start-transition context injection (role -> live-context -> project-context); SOLE writer `spt endpoint role --overwrite <file>` — mechanical no-automated-writer guarantee (echo-commune ingest / signoff / Psyche reconcile structurally exclude it). The user-backed-origin hard gate on the writer is a deferred later tightening (rides the user-msg identity plumbing)",
2026-06-21T04:47:53.7124643Z       "requiredStages": [
2026-06-21T04:47:53.7124906Z         "doc",
2026-06-21T04:47:53.7125172Z         "impl",
2026-06-21T04:47:53.7125438Z         "unit"
2026-06-21T04:47:53.7125701Z       ],
2026-06-21T04:47:53.7125987Z       "stages": {
2026-06-21T04:47:53.7126254Z         "doc": {
2026-06-21T04:47:53.7126546Z           "complete": true,
2026-06-21T04:47:53.7126818Z           "evidence": [
2026-06-21T04:47:53.7127078Z             {
2026-06-21T04:47:53.7127373Z               "path": "CONTEXT.md",
2026-06-21T04:47:53.7127655Z               "line": 490
2026-06-21T04:47:53.7127918Z             }
2026-06-21T04:47:53.7128185Z           ]
2026-06-21T04:47:53.7128447Z         },
2026-06-21T04:47:53.7128710Z         "impl": {
2026-06-21T04:47:53.7129087Z           "complete": true,
2026-06-21T04:47:53.7129361Z           "evidence": [
2026-06-21T04:47:53.7129621Z             {
2026-06-21T04:47:53.7129993Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T04:47:53.7130279Z               "line": 505
2026-06-21T04:47:53.7130536Z             },
2026-06-21T04:47:53.7130790Z             {
2026-06-21T04:47:53.7131147Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T04:47:53.7131418Z               "line": 87
2026-06-21T04:47:53.7131809Z             },
2026-06-21T04:47:53.7132071Z             {
2026-06-21T04:47:53.7132473Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T04:47:53.7132759Z               "line": 81
2026-06-21T04:47:53.7133023Z             },
2026-06-21T04:47:53.7133280Z             {
2026-06-21T04:47:53.7133681Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T04:47:53.7133966Z               "line": 166
2026-06-21T04:47:53.7134234Z             },
2026-06-21T04:47:53.7134506Z             {
2026-06-21T04:47:53.7134838Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.7135112Z               "line": 1645
2026-06-21T04:47:53.7135480Z             }
2026-06-21T04:47:53.7135737Z           ]
2026-06-21T04:47:53.7136003Z         },
2026-06-21T04:47:53.7136270Z         "int": {
2026-06-21T04:47:53.7136566Z           "complete": false,
2026-06-21T04:47:53.7136847Z           "evidence": []
2026-06-21T04:47:53.7137106Z         },
2026-06-21T04:47:53.7137388Z         "unit": {
2026-06-21T04:47:53.7137681Z           "complete": true,
2026-06-21T04:47:53.7137957Z           "evidence": [
2026-06-21T04:47:53.7138220Z             {
2026-06-21T04:47:53.7138582Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T04:47:53.7138868Z               "line": 623
2026-06-21T04:47:53.7139216Z             },
2026-06-21T04:47:53.7139474Z             {
2026-06-21T04:47:53.7139826Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T04:47:53.7140110Z               "line": 212
2026-06-21T04:47:53.7140368Z             },
2026-06-21T04:47:53.7140630Z             {
2026-06-21T04:47:53.7140983Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T04:47:53.7141264Z               "line": 307
2026-06-21T04:47:53.7141532Z             },
2026-06-21T04:47:53.7141788Z             {
2026-06-21T04:47:53.7142122Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.7142408Z               "line": 7724
2026-06-21T04:47:53.7142674Z             },
2026-06-21T04:47:53.7142939Z             {
2026-06-21T04:47:53.7143259Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.7143574Z               "line": 7751
2026-06-21T04:47:53.7143840Z             }
2026-06-21T04:47:53.7144098Z           ]
2026-06-21T04:47:53.7144350Z         }
2026-06-21T04:47:53.7144616Z       }
2026-06-21T04:47:53.7144874Z     },
2026-06-21T04:47:53.7145128Z     {
2026-06-21T04:47:53.7145422Z       "id": "REQ-FRONT-1",
2026-06-21T04:47:53.7145963Z       "title": "Day-one launcher/manager frontend (list/launch/attach/init)",
2026-06-21T04:47:53.7146268Z       "requiredStages": [],
2026-06-21T04:47:53.7146544Z       "stages": {
2026-06-21T04:47:53.7146812Z         "doc": {
2026-06-21T04:47:53.7147103Z           "complete": false,
2026-06-21T04:47:53.7147379Z           "evidence": []
2026-06-21T04:47:53.7147633Z         },
2026-06-21T04:47:53.7147900Z         "impl": {
2026-06-21T04:47:53.7148183Z           "complete": false,
2026-06-21T04:47:53.7148465Z           "evidence": []
2026-06-21T04:47:53.7148727Z         },
2026-06-21T04:47:53.7149075Z         "int": {
2026-06-21T04:47:53.7149371Z           "complete": false,
2026-06-21T04:47:53.7149653Z           "evidence": []
2026-06-21T04:47:53.7149911Z         },
2026-06-21T04:47:53.7150184Z         "unit": {
2026-06-21T04:47:53.7150462Z           "complete": false,
2026-06-21T04:47:53.7150745Z           "evidence": []
2026-06-21T04:47:53.7151008Z         }
2026-06-21T04:47:53.7151266Z       }
2026-06-21T04:47:53.7151519Z     },
2026-06-21T04:47:53.7151772Z     {
2026-06-21T04:47:53.7152101Z       "id": "REQ-HAZARD-ATTACH-WEDGE",
2026-06-21T04:47:53.7167160Z       "title": "A legitimately dead PTY child (real crash/kill) + an undrained operator pump must NOT wedge the broker for all other clients. ROOT (v0.12.0 real-harness defect): loopback attach output is a blocking write_all into a bounded 64KB tokio duplex (nethost.rs:1040,1090); when the operator's rc pump stops draining (tab closed) the buffer fills and write_all blocks forever (the 'loopback never hangs' assumption at nethost.rs:1103 is false), parking a worker in the 2-worker net runtime (nethost.rs:640); a couple of these saturate BOTH workers → every new attach / `endpoint run` stalls right after 'PUMP_IPC_READER: spawned' → 30s FIRST_EVENT_GRACE → 'no output / dead or wedged'; `daemon stop` cannot join the stuck workers. DISTINCT from the removed B1 path-(c) mutex deadlock. DISPOSITION = PROVE-DON'T-CHANGE (doyle GATE-PASS @e883f45, 2026-06-18): this ROOT is the SUPERSEDED v0.12.0 hypothesis — the post-L0 code ALREADY prevents the wedge, so NO fail-fast / worker-count code was added. serve_attach forwards fire-and-forget (net_stream_send op_id=None) and the broker-side send_stream is already BROKER-QUIC-DEADLINE-bounded (bounded_block_on, 10s); the loopback duplex is drained broker-INTERNALLY by the operator row's own read pump (RecvHalf::Loopback, retentive_cap==0 → evict-not-park) so a dead rc (a dropped IPC subscriber) never backs peer_w up; bounded_block_on parks the BROKER DISPATCH thread, not a net worker → no worker-pool exhaustion (full mechanism in the required_stages comment). Folds the status=online sub-check: a dead spt-hosted endpoint is marked OFFLINE within one reconcile tick on abrupt child death (broker exit-waiter reaps the session → B2 sees it absent) — PROVEN, no change. (v0.12.1)",
2026-06-21T04:47:53.7167752Z       "requiredStages": [
2026-06-21T04:47:53.7168013Z         "int"
2026-06-21T04:47:53.7168266Z       ],
2026-06-21T04:47:53.7168537Z       "stages": {
2026-06-21T04:47:53.7168805Z         "doc": {
2026-06-21T04:47:53.7169176Z           "complete": false,
2026-06-21T04:47:53.7169477Z           "evidence": []
2026-06-21T04:47:53.7169735Z         },
2026-06-21T04:47:53.7170011Z         "impl": {
2026-06-21T04:47:53.7170301Z           "complete": false,
2026-06-21T04:47:53.7170596Z           "evidence": []
2026-06-21T04:47:53.7170858Z         },
2026-06-21T04:47:53.7171120Z         "int": {
2026-06-21T04:47:53.7171402Z           "complete": true,
2026-06-21T04:47:53.7171705Z           "evidence": [
2026-06-21T04:47:53.7171981Z             {
2026-06-21T04:47:53.7172382Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-21T04:47:53.7172668Z               "line": 300
2026-06-21T04:47:53.7172931Z             }
2026-06-21T04:47:53.7173197Z           ]
2026-06-21T04:47:53.7173463Z         },
2026-06-21T04:47:53.7173726Z         "unit": {
2026-06-21T04:47:53.7174021Z           "complete": false,
2026-06-21T04:47:53.7174302Z           "evidence": []
2026-06-21T04:47:53.7174568Z         }
2026-06-21T04:47:53.7174824Z       }
2026-06-21T04:47:53.7175076Z     },
2026-06-21T04:47:53.7175339Z     {
2026-06-21T04:47:53.7175653Z       "id": "REQ-HAZARD-BIND-CWD-UNSET",
2026-06-21T04:47:53.7183152Z       "title": "A bound endpoint's `info.cwd` is SET at bind so a freshly-created perch appears under its own project tab. ROOT (found, v0.13.0): `info.cwd` is NEVER set on bind — `cmd_bind` (spt-hosted) and `bind_from_seed` (harness-hosted) never thread cwd into `establish_perch`/`rec.cwd`. FIX: `cmd_bind` reads its own `current_dir` (the broker spawned it in `project_cwd`); `bind_from_seed` passes `seed.cwd` (already captured at seed time, currently DISCARDED). DISTINCT from REQ-PICKER-HISTORY-FRESH (v0.12.1) — that unioned cwd-origin into picker MEMBERSHIP but tested merge_origin_project with a PROVIDED origin; it never asserted `info.cwd` is actually set on bind, so a real `endpoint run` perch still had an empty cwd and the union had nothing to union. This is the v0.12.1 P1 'appears under its own project right away' claim that was REFUTED in the changelog — delivered for real here. (v0.13.0)",
2026-06-21T04:47:53.7183505Z       "requiredStages": [
2026-06-21T04:47:53.7183767Z         "impl",
2026-06-21T04:47:53.7184038Z         "unit",
2026-06-21T04:47:53.7184295Z         "int"
2026-06-21T04:47:53.7184562Z       ],
2026-06-21T04:47:53.7184839Z       "stages": {
2026-06-21T04:47:53.7185091Z         "doc": {
2026-06-21T04:47:53.7185504Z           "complete": false,
2026-06-21T04:47:53.7185785Z           "evidence": []
2026-06-21T04:47:53.7186057Z         },
2026-06-21T04:47:53.7186329Z         "impl": {
2026-06-21T04:47:53.7186629Z           "complete": true,
2026-06-21T04:47:53.7186910Z           "evidence": [
2026-06-21T04:47:53.7187172Z             {
2026-06-21T04:47:53.7187547Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:53.7187817Z               "line": 257
2026-06-21T04:47:53.7188084Z             }
2026-06-21T04:47:53.7188347Z           ]
2026-06-21T04:47:53.7188605Z         },
2026-06-21T04:47:53.7188877Z         "int": {
2026-06-21T04:47:53.7189244Z           "complete": true,
2026-06-21T04:47:53.7189639Z           "evidence": [
2026-06-21T04:47:53.7189883Z             {
2026-06-21T04:47:53.7190310Z               "path": "crates/spt/tests/bind_cwd_project_e2e.rs",
2026-06-21T04:47:53.7190573Z               "line": 93
2026-06-21T04:47:53.7190835Z             }
2026-06-21T04:47:53.7191102Z           ]
2026-06-21T04:47:53.7191358Z         },
2026-06-21T04:47:53.7191626Z         "unit": {
2026-06-21T04:47:53.7191907Z           "complete": true,
2026-06-21T04:47:53.7192189Z           "evidence": [
2026-06-21T04:47:53.7192438Z             {
2026-06-21T04:47:53.7192803Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:53.7193121Z               "line": 802
2026-06-21T04:47:53.7193840Z             },
2026-06-21T04:47:53.7194427Z             {
2026-06-21T04:47:53.7195098Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:53.7195925Z               "line": 824
2026-06-21T04:47:53.7196575Z             },
2026-06-21T04:47:53.7197194Z             {
2026-06-21T04:47:53.7197924Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:53.7198773Z               "line": 855
2026-06-21T04:47:53.7199512Z             }
2026-06-21T04:47:53.7200091Z           ]
2026-06-21T04:47:53.7200657Z         }
2026-06-21T04:47:53.7201204Z       }
2026-06-21T04:47:53.7201753Z     },
2026-06-21T04:47:53.7202301Z     {
2026-06-21T04:47:53.7202945Z       "id": "REQ-HAZARD-BRAIN-RESPAWN-PATH",
2026-06-21T04:47:53.7210874Z       "title": "The broker respawns the brain onto the APPLIED bytes, not the renamed old binary: the candidate-binary default is the canonical exe path captured ONCE at broker start, never a per-spawn std::env::current_exe() — on Linux current_exe (readlink /proc/self/exe) is inode-tracking and follows the `apply` rename (spt -> spt.old-N), so a resident broker would respawn the brain onto OLD bytes while recording `applied` (Windows GetModuleFileName is path-at-start, so Windows was green; ADR-0018 Q3 silently assumed path-string semantics). Backstop: promotion gates on bytes — a trial promotes only if brain.ready exe_hash == the staged artifact hash for this platform, else auto-rollback + loud notif (readiness != new-bytes was the false-success that recorded applied:8 over a v0.4.0 brain on kitsubito, 2026-06-11). KNOWN-HAZARDS 6.11.",
2026-06-21T04:47:53.7218190Z       "requiredStages": [
2026-06-21T04:47:53.7218886Z         "doc",
2026-06-21T04:47:53.7219559Z         "impl",
2026-06-21T04:47:53.7220141Z         "unit",
2026-06-21T04:47:53.7220719Z         "int"
2026-06-21T04:47:53.7221277Z       ],
2026-06-21T04:47:53.7221835Z       "stages": {
2026-06-21T04:47:53.7222429Z         "doc": {
2026-06-21T04:47:53.7223049Z           "complete": true,
2026-06-21T04:47:53.7223727Z           "evidence": [
2026-06-21T04:47:53.7224354Z             {
2026-06-21T04:47:53.7225006Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T04:47:53.7225816Z               "line": 333
2026-06-21T04:47:53.7226464Z             }
2026-06-21T04:47:53.7227066Z           ]
2026-06-21T04:47:53.7227621Z         },
2026-06-21T04:47:53.7228187Z         "impl": {
2026-06-21T04:47:53.7228807Z           "complete": true,
2026-06-21T04:47:53.7229567Z           "evidence": [
2026-06-21T04:47:53.7230206Z             {
2026-06-21T04:47:53.7230893Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7231922Z               "line": 494
2026-06-21T04:47:53.7232565Z             },
2026-06-21T04:47:53.7233152Z             {
2026-06-21T04:47:53.7233862Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7234730Z               "line": 499
2026-06-21T04:47:53.7235386Z             },
2026-06-21T04:47:53.7235976Z             {
2026-06-21T04:47:53.7236677Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7237541Z               "line": 874
2026-06-21T04:47:53.7238195Z             },
2026-06-21T04:47:53.7238772Z             {
2026-06-21T04:47:53.7239558Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7240552Z               "line": 915
2026-06-21T04:47:53.7241191Z             },
2026-06-21T04:47:53.7241773Z             {
2026-06-21T04:47:53.7242468Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7243326Z               "line": 926
2026-06-21T04:47:53.7244041Z             },
2026-06-21T04:47:53.7244623Z             {
2026-06-21T04:47:53.7245314Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T04:47:53.7246169Z               "line": 358
2026-06-21T04:47:53.7251641Z             }
2026-06-21T04:47:53.7252285Z           ]
2026-06-21T04:47:53.7252867Z         },
2026-06-21T04:47:53.7253429Z         "int": {
2026-06-21T04:47:53.7254043Z           "complete": true,
2026-06-21T04:47:53.7254734Z           "evidence": [
2026-06-21T04:47:53.7255368Z             {
2026-06-21T04:47:53.7256102Z               "path": "crates/spt/tests/brain_respawn_rename.rs",
2026-06-21T04:47:53.7256986Z               "line": 30
2026-06-21T04:47:53.7257644Z             }
2026-06-21T04:47:53.7258207Z           ]
2026-06-21T04:47:53.7258760Z         },
2026-06-21T04:47:53.7259406Z         "unit": {
2026-06-21T04:47:53.7260016Z           "complete": true,
2026-06-21T04:47:53.7260693Z           "evidence": [
2026-06-21T04:47:53.7261313Z             {
2026-06-21T04:47:53.7262010Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7262893Z               "line": 1493
2026-06-21T04:47:53.7263560Z             },
2026-06-21T04:47:53.7264128Z             {
2026-06-21T04:47:53.7264837Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7265710Z               "line": 1518
2026-06-21T04:47:53.7266378Z             },
2026-06-21T04:47:53.7266965Z             {
2026-06-21T04:47:53.7267667Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7268544Z               "line": 1535
2026-06-21T04:47:53.7269265Z             },
2026-06-21T04:47:53.7269842Z             {
2026-06-21T04:47:53.7270539Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7271411Z               "line": 1578
2026-06-21T04:47:53.7272072Z             }
2026-06-21T04:47:53.7272646Z           ]
2026-06-21T04:47:53.7273205Z         }
2026-06-21T04:47:53.7273758Z       }
2026-06-21T04:47:53.7274297Z     },
2026-06-21T04:47:53.7274835Z     {
2026-06-21T04:47:53.7275559Z       "id": "REQ-HAZARD-BRAIN-RESTART-LIFECYCLE-REHYDRATE",
2026-06-21T04:47:53.7283913Z       "title": "B4 (deepest): a bare brain restart (broker survives) REHYDRATES the live-agent lifecycle so post-restart endpoints are hosted + attachable. Today resume_sessions (brainproc.rs:186, brain.rs:797-809) re-subscribes to the broker's PTY sessions but ALL BrainLifecycle instances (lifecycle.rs:58-130; the ephemeral brain.rs:254-275) are LOST on restart → a post-restart live endpoint gets no livehost → its Psyche is never (re)hosted and new spawns die / can't attach until a FULL daemon reset (operator: perri's brain kill+restart wedged everything until a full daemon kill). FIX: on brain startup, rebuild a BrainLifecycle per resumed live-capable session — load the manifest from the adapter registry → instantiate → start the pulse — the rehydrate the resume no-op cannot do. Composes with B2 (the reconcile re-hosts from the honest on-disk status after rehydrate). (v0.12.0)",
2026-06-21T04:47:53.7291877Z       "requiredStages": [],
2026-06-21T04:47:53.7292561Z       "stages": {
2026-06-21T04:47:53.7293158Z         "doc": {
2026-06-21T04:47:53.7293776Z           "complete": false,
2026-06-21T04:47:53.7294478Z           "evidence": []
2026-06-21T04:47:53.7295122Z         },
2026-06-21T04:47:53.7295684Z         "impl": {
2026-06-21T04:47:53.7296307Z           "complete": false,
2026-06-21T04:47:53.7297009Z           "evidence": []
2026-06-21T04:47:53.7297667Z         },
2026-06-21T04:47:53.7298218Z         "int": {
2026-06-21T04:47:53.7298836Z           "complete": false,
2026-06-21T04:47:53.7299614Z           "evidence": []
2026-06-21T04:47:53.7300429Z         },
2026-06-21T04:47:53.7300987Z         "unit": {
2026-06-21T04:47:53.7301609Z           "complete": false,
2026-06-21T04:47:53.7302305Z           "evidence": []
2026-06-21T04:47:53.7302943Z         }
2026-06-21T04:47:53.7303497Z       }
2026-06-21T04:47:53.7304041Z     },
2026-06-21T04:47:53.7304575Z     {
2026-06-21T04:47:53.7305271Z       "id": "REQ-HAZARD-BRAIN-RESTART-PSYCHE-DUP",
2026-06-21T04:47:53.7316713Z       "title": "A bare brain restart leaves EXACTLY ONE `{id}-psyche` process per endpoint — no duplicate. On an abrupt brain death stop_host never runs (the LiveSet + owned child handles die with the brain) and Breap's job/group only reaps at DAEMON stop, so the PRIOR brain's Psyche stays ALIVE; the respawned brain's reconcile re-hosts a SECOND Psyche and overwrites the `{id}-psyche` perch pid, leaving the old one untracked + alive = a duplicate that lingers until daemon-stop (the operator's 'brain kill+restart wedged everything'). FIX: at brain start, BEFORE the first reconcile re-hosts, reap any pre-existing `{id}-psyche` orphan — ID-SPECIFICALLY (recycle-safe on the shared box, where sibling agents share the `claude` basename): scoped-kill the recorded pid ONLY IF it is alive AND its exe basename == the adapter's psyche program (normalize_basename) AND its COMMAND LINE contains the full psyche id `<id>-psyche` (baked via {id}); a sibling never carries THIS id, and any unreadable signal FAILS SAFE (decline to reap — a missed dup is bounded by Breap, a wrong-kill is catastrophic). CAVEAT: the cmdline carries `<id>-psyche` only when the adapter's psyche_init.command uses {id} (the norm); a non-{id} adapter safely MISSES the reap (today's behavior, Breap bounds it) — never a wrong-kill. (v0.12.0)",
2026-06-21T04:47:53.7328137Z       "requiredStages": [
2026-06-21T04:47:53.7328804Z         "impl",
2026-06-21T04:47:53.7329490Z         "unit",
2026-06-21T04:47:53.7330071Z         "int"
2026-06-21T04:47:53.7330631Z       ],
2026-06-21T04:47:53.7331183Z       "stages": {
2026-06-21T04:47:53.7331799Z         "doc": {
2026-06-21T04:47:53.7332429Z           "complete": false,
2026-06-21T04:47:53.7333116Z           "evidence": []
2026-06-21T04:47:53.7333760Z         },
2026-06-21T04:47:53.7334323Z         "impl": {
2026-06-21T04:47:53.7334928Z           "complete": true,
2026-06-21T04:47:53.7335597Z           "evidence": [
2026-06-21T04:47:53.7336265Z             {
2026-06-21T04:47:53.7336961Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.7337809Z               "line": 570
2026-06-21T04:47:53.7338453Z             },
2026-06-21T04:47:53.7339125Z             {
2026-06-21T04:47:53.7339807Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.7340668Z               "line": 594
2026-06-21T04:47:53.7341315Z             },
2026-06-21T04:47:53.7341898Z             {
2026-06-21T04:47:53.7342584Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.7343455Z               "line": 620
2026-06-21T04:47:53.7344202Z             },
2026-06-21T04:47:53.7344798Z             {
2026-06-21T04:47:53.7345497Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.7346358Z               "line": 679
2026-06-21T04:47:53.7347003Z             },
2026-06-21T04:47:53.7347579Z             {
2026-06-21T04:47:53.7348242Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T04:47:53.7349323Z               "line": 89
2026-06-21T04:47:53.7349971Z             },
2026-06-21T04:47:53.7350553Z             {
2026-06-21T04:47:53.7351219Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T04:47:53.7352061Z               "line": 134
2026-06-21T04:47:53.7352710Z             }
2026-06-21T04:47:53.7353267Z           ]
2026-06-21T04:47:53.7353825Z         },
2026-06-21T04:47:53.7354381Z         "int": {
2026-06-21T04:47:53.7355001Z           "complete": true,
2026-06-21T04:47:53.7355697Z           "evidence": [
2026-06-21T04:47:53.7356336Z             {
2026-06-21T04:47:53.7357118Z               "path": "crates/spt/tests/brain_restart_psyche_dup_e2e.rs",
2026-06-21T04:47:53.7358221Z               "line": 20
2026-06-21T04:47:53.7358860Z             }
2026-06-21T04:47:53.7359521Z           ]
2026-06-21T04:47:53.7360079Z         },
2026-06-21T04:47:53.7360631Z         "unit": {
2026-06-21T04:47:53.7361246Z           "complete": true,
2026-06-21T04:47:53.7361939Z           "evidence": [
2026-06-21T04:47:53.7362563Z             {
2026-06-21T04:47:53.7363246Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.7364104Z               "line": 1047
2026-06-21T04:47:53.7364735Z             },
2026-06-21T04:47:53.7365298Z             {
2026-06-21T04:47:53.7365975Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T04:47:53.7366806Z               "line": 445
2026-06-21T04:47:53.7367459Z             }
2026-06-21T04:47:53.7368040Z           ]
2026-06-21T04:47:53.7368608Z         }
2026-06-21T04:47:53.7369247Z       }
2026-06-21T04:47:53.7369791Z     },
2026-06-21T04:47:53.7370333Z     {
2026-06-21T04:47:53.7371002Z       "id": "REQ-HAZARD-BROKER-PROCESS-ISOLATION",
2026-06-21T04:47:53.7379106Z       "title": "Broker and brain are separate processes: the broker runs as its own long-lived per-machine process that survives every brain restart, so a routine (brain-only) self-update restarts the brain onto the swapped binary while every hosted endpoint (PTY child, live QUIC conn, listening socket) stays untouched at the PROCESS level. The in-process-thread broker (daemon.rs:165-170) is a regression that silently unrealizes REQ-UPD-3 — apply degrades to an in-process Brain::handoff no-op and new code does not run until an unrelated restart (KNOWN-HAZARDS 6.7). Evidence must prove process-level survival (SPIKE-01/03 productionized as int: PTY child + live QUIC survive a brain-PROCESS restart onto a swapped binary), re-pointing the regression-masked in-process int tags currently on REQ-DAEMON-2 / REQ-UPD-3 (ADR-0018).",
2026-06-21T04:47:53.7386308Z       "requiredStages": [
2026-06-21T04:47:53.7386977Z         "doc",
2026-06-21T04:47:53.7387582Z         "impl",
2026-06-21T04:47:53.7388162Z         "unit",
2026-06-21T04:47:53.7388751Z         "int"
2026-06-21T04:47:53.7389409Z       ],
2026-06-21T04:47:53.7389962Z       "stages": {
2026-06-21T04:47:53.7390554Z         "doc": {
2026-06-21T04:47:53.7391178Z           "complete": true,
2026-06-21T04:47:53.7391888Z           "evidence": [
2026-06-21T04:47:53.7392517Z             {
2026-06-21T04:47:53.7393165Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T04:47:53.7393977Z               "line": 302
2026-06-21T04:47:53.7394617Z             }
2026-06-21T04:47:53.7395193Z           ]
2026-06-21T04:47:53.7395746Z         },
2026-06-21T04:47:53.7396308Z         "impl": {
2026-06-21T04:47:53.7396936Z           "complete": true,
2026-06-21T04:47:53.7397612Z           "evidence": [
2026-06-21T04:47:53.7398242Z             {
2026-06-21T04:47:53.7399029Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T04:47:53.7399889Z               "line": 108
2026-06-21T04:47:53.7400546Z             },
2026-06-21T04:47:53.7401124Z             {
2026-06-21T04:47:53.7401800Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T04:47:53.7402624Z               "line": 843
2026-06-21T04:47:53.7403269Z             },
2026-06-21T04:47:53.7403849Z             {
2026-06-21T04:47:53.7404518Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T04:47:53.7405544Z               "line": 1043
2026-06-21T04:47:53.7406198Z             },
2026-06-21T04:47:53.7406768Z             {
2026-06-21T04:47:53.7407448Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7408325Z               "line": 23
2026-06-21T04:47:53.7409046Z             },
2026-06-21T04:47:53.7409627Z             {
2026-06-21T04:47:53.7410335Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7411211Z               "line": 113
2026-06-21T04:47:53.7411865Z             },
2026-06-21T04:47:53.7412450Z             {
2026-06-21T04:47:53.7413285Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7414158Z               "line": 158
2026-06-21T04:47:53.7414807Z             },
2026-06-21T04:47:53.7415383Z             {
2026-06-21T04:47:53.7416086Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7416938Z               "line": 218
2026-06-21T04:47:53.7417597Z             },
2026-06-21T04:47:53.7418180Z             {
2026-06-21T04:47:53.7418875Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7419824Z               "line": 261
2026-06-21T04:47:53.7420474Z             },
2026-06-21T04:47:53.7421051Z             {
2026-06-21T04:47:53.7421752Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7422619Z               "line": 275
2026-06-21T04:47:53.7423277Z             },
2026-06-21T04:47:53.7423859Z             {
2026-06-21T04:47:53.7424555Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7425430Z               "line": 320
2026-06-21T04:47:53.7426078Z             },
2026-06-21T04:47:53.7426656Z             {
2026-06-21T04:47:53.7427356Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7428234Z               "line": 347
2026-06-21T04:47:53.7428879Z             },
2026-06-21T04:47:53.7429537Z             {
2026-06-21T04:47:53.7430238Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7431092Z               "line": 359
2026-06-21T04:47:53.7431746Z             },
2026-06-21T04:47:53.7432327Z             {
2026-06-21T04:47:53.7433025Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7433909Z               "line": 373
2026-06-21T04:47:53.7434552Z             },
2026-06-21T04:47:53.7435129Z             {
2026-06-21T04:47:53.7435831Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7436709Z               "line": 400
2026-06-21T04:47:53.7437348Z             },
2026-06-21T04:47:53.7437935Z             {
2026-06-21T04:47:53.7438632Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7439577Z               "line": 643
2026-06-21T04:47:53.7440229Z             },
2026-06-21T04:47:53.7440808Z             {
2026-06-21T04:47:53.7441500Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7442378Z               "line": 989
2026-06-21T04:47:53.7443017Z             },
2026-06-21T04:47:53.7443594Z             {
2026-06-21T04:47:53.7444355Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.7445199Z               "line": 260
2026-06-21T04:47:53.7445853Z             },
2026-06-21T04:47:53.7446429Z             {
2026-06-21T04:47:53.7447107Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.7447951Z               "line": 1143
2026-06-21T04:47:53.7448619Z             },
2026-06-21T04:47:53.7449292Z             {
2026-06-21T04:47:53.7449975Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.7450823Z               "line": 1215
2026-06-21T04:47:53.7451494Z             },
2026-06-21T04:47:53.7452070Z             {
2026-06-21T04:47:53.7452737Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.7453586Z               "line": 1227
2026-06-21T04:47:53.7454240Z             },
2026-06-21T04:47:53.7454958Z             {
2026-06-21T04:47:53.7455625Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.7456470Z               "line": 1842
2026-06-21T04:47:53.7457115Z             },
2026-06-21T04:47:53.7457687Z             {
2026-06-21T04:47:53.7458421Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.7459412Z               "line": 188
2026-06-21T04:47:53.7460053Z             },
2026-06-21T04:47:53.7460626Z             {
2026-06-21T04:47:53.7461312Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.7462150Z               "line": 265
2026-06-21T04:47:53.7462806Z             },
2026-06-21T04:47:53.7463550Z             {
2026-06-21T04:47:53.7464231Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.7465079Z               "line": 276
2026-06-21T04:47:53.7465719Z             },
2026-06-21T04:47:53.7466305Z             {
2026-06-21T04:47:53.7466992Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.7467851Z               "line": 329
2026-06-21T04:47:53.7468504Z             },
2026-06-21T04:47:53.7469177Z             {
2026-06-21T04:47:53.7469879Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T04:47:53.7470737Z               "line": 56
2026-06-21T04:47:53.7471380Z             },
2026-06-21T04:47:53.7471967Z             {
2026-06-21T04:47:53.7472652Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T04:47:53.7473519Z               "line": 188
2026-06-21T04:47:53.7474167Z             },
2026-06-21T04:47:53.7474753Z             {
2026-06-21T04:47:53.7475439Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T04:47:53.7476312Z               "line": 82
2026-06-21T04:47:53.7476951Z             },
2026-06-21T04:47:53.7477529Z             {
2026-06-21T04:47:53.7478221Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:53.7479198Z               "line": 308
2026-06-21T04:47:53.7479875Z             },
2026-06-21T04:47:53.7480458Z             {
2026-06-21T04:47:53.7481131Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T04:47:53.7481970Z               "line": 424
2026-06-21T04:47:53.7482614Z             },
2026-06-21T04:47:53.7483189Z             {
2026-06-21T04:47:53.7483821Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.7484613Z               "line": 2006
2026-06-21T04:47:53.7485262Z             }
2026-06-21T04:47:53.7485820Z           ]
2026-06-21T04:47:53.7486371Z         },
2026-06-21T04:47:53.7486920Z         "int": {
2026-06-21T04:47:53.7487535Z           "complete": true,
2026-06-21T04:47:53.7488211Z           "evidence": [
2026-06-21T04:47:53.7488844Z             {
2026-06-21T04:47:53.7489624Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T04:47:53.7490477Z               "line": 57
2026-06-21T04:47:53.7491117Z             },
2026-06-21T04:47:53.7491696Z             {
2026-06-21T04:47:53.7492363Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-21T04:47:53.7493199Z               "line": 41
2026-06-21T04:47:53.7493831Z             }
2026-06-21T04:47:53.7494400Z           ]
2026-06-21T04:47:53.7494949Z         },
2026-06-21T04:47:53.7495521Z         "unit": {
2026-06-21T04:47:53.7496137Z           "complete": true,
2026-06-21T04:47:53.7496818Z           "evidence": [
2026-06-21T04:47:53.7497446Z             {
2026-06-21T04:47:53.7498138Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T04:47:53.7499079Z               "line": 532
2026-06-21T04:47:53.7499727Z             },
2026-06-21T04:47:53.7500304Z             {
2026-06-21T04:47:53.7500995Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T04:47:53.7501876Z               "line": 757
2026-06-21T04:47:53.7502509Z             },
2026-06-21T04:47:53.7503080Z             {
2026-06-21T04:47:53.7503754Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7504621Z               "line": 1067
2026-06-21T04:47:53.7505318Z             },
2026-06-21T04:47:53.7506100Z             {
2026-06-21T04:47:53.7506791Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7507673Z               "line": 1101
2026-06-21T04:47:53.7508321Z             },
2026-06-21T04:47:53.7508894Z             {
2026-06-21T04:47:53.7509705Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7510573Z               "line": 1143
2026-06-21T04:47:53.7511221Z             },
2026-06-21T04:47:53.7511791Z             {
2026-06-21T04:47:53.7512483Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7513350Z               "line": 1215
2026-06-21T04:47:53.7514137Z             },
2026-06-21T04:47:53.7514705Z             {
2026-06-21T04:47:53.7515398Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7516242Z               "line": 1228
2026-06-21T04:47:53.7516895Z             },
2026-06-21T04:47:53.7517462Z             {
2026-06-21T04:47:53.7518142Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7519086Z               "line": 1251
2026-06-21T04:47:53.7519735Z             },
2026-06-21T04:47:53.7520322Z             {
2026-06-21T04:47:53.7521004Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7521867Z               "line": 1277
2026-06-21T04:47:53.7522516Z             },
2026-06-21T04:47:53.7523095Z             {
2026-06-21T04:47:53.7523790Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7529218Z               "line": 1291
2026-06-21T04:47:53.7529947Z             },
2026-06-21T04:47:53.7530528Z             {
2026-06-21T04:47:53.7531230Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7532136Z               "line": 1315
2026-06-21T04:47:53.7532785Z             },
2026-06-21T04:47:53.7533371Z             {
2026-06-21T04:47:53.7534074Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7534928Z               "line": 1447
2026-06-21T04:47:53.7535595Z             },
2026-06-21T04:47:53.7536166Z             {
2026-06-21T04:47:53.7536846Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7537724Z               "line": 1623
2026-06-21T04:47:53.7538396Z             },
2026-06-21T04:47:53.7539063Z             {
2026-06-21T04:47:53.7539806Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7540750Z               "line": 1678
2026-06-21T04:47:53.7541447Z             },
2026-06-21T04:47:53.7542043Z             {
2026-06-21T04:47:53.7542740Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7543636Z               "line": 1724
2026-06-21T04:47:53.7544391Z             },
2026-06-21T04:47:53.7544958Z             {
2026-06-21T04:47:53.7545684Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7546573Z               "line": 1769
2026-06-21T04:47:53.7547239Z             },
2026-06-21T04:47:53.7547816Z             {
2026-06-21T04:47:53.7548512Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7549455Z               "line": 1813
2026-06-21T04:47:53.7550128Z             },
2026-06-21T04:47:53.7550690Z             {
2026-06-21T04:47:53.7551372Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7552242Z               "line": 1855
2026-06-21T04:47:53.7552890Z             },
2026-06-21T04:47:53.7553458Z             {
2026-06-21T04:47:53.7554139Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.7554989Z               "line": 2176
2026-06-21T04:47:53.7555648Z             },
2026-06-21T04:47:53.7556240Z             {
2026-06-21T04:47:53.7556936Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T04:47:53.7557784Z               "line": 217
2026-06-21T04:47:53.7558419Z             },
2026-06-21T04:47:53.7559072Z             {
2026-06-21T04:47:53.7559765Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T04:47:53.7560822Z               "line": 233
2026-06-21T04:47:53.7561475Z             },
2026-06-21T04:47:53.7562053Z             {
2026-06-21T04:47:53.7562750Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T04:47:53.7563594Z               "line": 254
2026-06-21T04:47:53.7564233Z             },
2026-06-21T04:47:53.7564814Z             {
2026-06-21T04:47:53.7565497Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T04:47:53.7566360Z               "line": 265
2026-06-21T04:47:53.7567004Z             },
2026-06-21T04:47:53.7567576Z             {
2026-06-21T04:47:53.7568250Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T04:47:53.7569313Z               "line": 278
2026-06-21T04:47:53.7569947Z             },
2026-06-21T04:47:53.7570533Z             {
2026-06-21T04:47:53.7571214Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T04:47:53.7572068Z               "line": 289
2026-06-21T04:47:53.7572692Z             },
2026-06-21T04:47:53.7573277Z             {
2026-06-21T04:47:53.7573958Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T04:47:53.7574793Z               "line": 301
2026-06-21T04:47:53.7575485Z             },
2026-06-21T04:47:53.7576119Z             {
2026-06-21T04:47:53.7576811Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T04:47:53.7577665Z               "line": 312
2026-06-21T04:47:53.7578307Z             },
2026-06-21T04:47:53.7578881Z             {
2026-06-21T04:47:53.7579636Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T04:47:53.7580488Z               "line": 323
2026-06-21T04:47:53.7581121Z             },
2026-06-21T04:47:53.7581698Z             {
2026-06-21T04:47:53.7582380Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T04:47:53.7583238Z               "line": 332
2026-06-21T04:47:53.7583880Z             },
2026-06-21T04:47:53.7584456Z             {
2026-06-21T04:47:53.7585142Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T04:47:53.7585992Z               "line": 342
2026-06-21T04:47:53.7586622Z             },
2026-06-21T04:47:53.7587199Z             {
2026-06-21T04:47:53.7587896Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T04:47:53.7588743Z               "line": 358
2026-06-21T04:47:53.7589475Z             },
2026-06-21T04:47:53.7590070Z             {
2026-06-21T04:47:53.7590763Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:53.7591624Z               "line": 758
2026-06-21T04:47:53.7592268Z             },
2026-06-21T04:47:53.7592836Z             {
2026-06-21T04:47:53.7593526Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:53.7594387Z               "line": 794
2026-06-21T04:47:53.7595036Z             },
2026-06-21T04:47:53.7595598Z             {
2026-06-21T04:47:53.7596267Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T04:47:53.7597101Z               "line": 966
2026-06-21T04:47:53.7597745Z             },
2026-06-21T04:47:53.7598322Z             {
2026-06-21T04:47:53.7599091Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T04:47:53.7599930Z               "line": 145
2026-06-21T04:47:53.7600550Z             },
2026-06-21T04:47:53.7601113Z             {
2026-06-21T04:47:53.7601790Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T04:47:53.7602638Z               "line": 224
2026-06-21T04:47:53.7603267Z             },
2026-06-21T04:47:53.7603824Z             {
2026-06-21T04:47:53.7604505Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T04:47:53.7605357Z               "line": 293
2026-06-21T04:47:53.7605987Z             },
2026-06-21T04:47:53.7606564Z             {
2026-06-21T04:47:53.7607245Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-21T04:47:53.7608067Z               "line": 17
2026-06-21T04:47:53.7608696Z             },
2026-06-21T04:47:53.7609336Z             {
2026-06-21T04:47:53.7610006Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-21T04:47:53.7610973Z               "line": 104
2026-06-21T04:47:53.7611234Z             }
2026-06-21T04:47:53.7611482Z           ]
2026-06-21T04:47:53.7611749Z         }
2026-06-21T04:47:53.7612007Z       }
2026-06-21T04:47:53.7612266Z     },
2026-06-21T04:47:53.7612523Z     {
2026-06-21T04:47:53.7612873Z       "id": "REQ-HAZARD-BROKER-QUIC-DEADLINE",
2026-06-21T04:47:53.7621886Z       "title": "The broker bounds every brain-waiting QUIC op (dial / open_stream / send_stream) so a black-holed or dead peer fails PROMPTLY with an ORDINARY error the broker REPLIES, never an unbounded await. The bound (< the brain's 30s PUMP_PEER_IO_TIMEOUT so the BROKER fires first) surfaces to the pump as a normal broker error reply → peer_outcome's non-TimedOut arm → drop conn + redial next tick, the round CONTINUES and the heartbeat keeps advancing — it must NEVER manifest as the brain's own read-deadline (the A-half poison → supervised-restart path REQ-HAZARD-PUMP-IPC-DEADLINE guards). Exactly-once is preserved: a timed-out journaled op fails INSIDE its apply_once closure so no phantom conn_id/stream_id is recorded and a fresh tick re-dials cleanly. The happy path is unchanged (a live peer completes with zero added latency; the bound only bites a non-responsive peer). This is the ROOT-cause cure for the 2.2h hfenduleam pump wedge — a dead roster peer whose QUIC path the broker awaited unbounded — recurring on hfenduleam 2026-06-16.",
2026-06-21T04:47:53.7622371Z       "requiredStages": [
2026-06-21T04:47:53.7622633Z         "doc",
2026-06-21T04:47:53.7622891Z         "impl",
2026-06-21T04:47:53.7623145Z         "unit",
2026-06-21T04:47:53.7623405Z         "int"
2026-06-21T04:47:53.7623705Z       ],
2026-06-21T04:47:53.7623968Z       "stages": {
2026-06-21T04:47:53.7624231Z         "doc": {
2026-06-21T04:47:53.7624526Z           "complete": true,
2026-06-21T04:47:53.7624793Z           "evidence": [
2026-06-21T04:47:53.7625047Z             {
2026-06-21T04:47:53.7625395Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T04:47:53.7625703Z               "line": 388
2026-06-21T04:47:53.7625967Z             }
2026-06-21T04:47:53.7626224Z           ]
2026-06-21T04:47:53.7626477Z         },
2026-06-21T04:47:53.7626749Z         "impl": {
2026-06-21T04:47:53.7627036Z           "complete": true,
2026-06-21T04:47:53.7627317Z           "evidence": [
2026-06-21T04:47:53.7627579Z             {
2026-06-21T04:47:53.7627952Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T04:47:53.7628233Z               "line": 773
2026-06-21T04:47:53.7628488Z             },
2026-06-21T04:47:53.7628743Z             {
2026-06-21T04:47:53.7629187Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T04:47:53.7629497Z               "line": 796
2026-06-21T04:47:53.7629763Z             }
2026-06-21T04:47:53.7630017Z           ]
2026-06-21T04:47:53.7630279Z         },
2026-06-21T04:47:53.7630528Z         "int": {
2026-06-21T04:47:53.7630814Z           "complete": true,
2026-06-21T04:47:53.7631093Z           "evidence": [
2026-06-21T04:47:53.7631348Z             {
2026-06-21T04:47:53.7631744Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T04:47:53.7632011Z               "line": 228
2026-06-21T04:47:53.7632278Z             },
2026-06-21T04:47:53.7632536Z             {
2026-06-21T04:47:53.7632912Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T04:47:53.7633193Z               "line": 468
2026-06-21T04:47:53.7633438Z             }
2026-06-21T04:47:53.7633691Z           ]
2026-06-21T04:47:53.7633945Z         },
2026-06-21T04:47:53.7634208Z         "unit": {
2026-06-21T04:47:53.7634485Z           "complete": true,
2026-06-21T04:47:53.7634762Z           "evidence": [
2026-06-21T04:47:53.7635010Z             {
2026-06-21T04:47:53.7635391Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T04:47:53.7635668Z               "line": 1495
2026-06-21T04:47:53.7635921Z             }
2026-06-21T04:47:53.7636177Z           ]
2026-06-21T04:47:53.7636432Z         }
2026-06-21T04:47:53.7636798Z       }
2026-06-21T04:47:53.7637057Z     },
2026-06-21T04:47:53.7637319Z     {
2026-06-21T04:47:53.7637681Z       "id": "REQ-HAZARD-BROKER-SEED-WIRE-SKEW",
2026-06-21T04:47:53.7648433Z       "title": "A daemon-state wire-format change (e.g. the v0.9.0 adapter-agnostic Seed) does NOT take effect until a DELIBERATE full broker restart: the broker serves the seed-control channel and is RESIDENT across a brain-only self-update (ADR-0004 no-terminate-during-update forbids auto-killing it), so a NEW-version CLI talking to a still-resident OLD broker fails the seed handshake — the old broker cannot deserialize the new Seed (its formerly-required `adapter` field is gone) and drops the conn without an ack, which surfaces to the CLI as a raw UnexpectedEof 'failed to fill whole buffer'. spt-core must (a) surface an ACTIONABLE diagnostic on that seed-ack EOF (name the stale-broker cause + the `spt daemon stop` fix — the broker restarts on the next api call), never the cryptic io error; and (b) document the operational rule (a deliberate broker restart is required on any daemon-state wire change — NOT automatic) + the FORWARD discipline (daemon-state/Seed schema changes stay additive + serde-default so a resident OLD broker tolerates a NEW CLI across a brain-only update; note this would NOT have rescued 0.9.0 itself, since the old broker's `adapter` was a required field). perri PREP-4 FINDING 1 (v0.9.0 CLI vs stale 0.8.x broker).",
2026-06-21T04:47:53.7649024Z       "requiredStages": [
2026-06-21T04:47:53.7649295Z         "doc",
2026-06-21T04:47:53.7649561Z         "impl",
2026-06-21T04:47:53.7649821Z         "unit"
2026-06-21T04:47:53.7650070Z       ],
2026-06-21T04:47:53.7650370Z       "stages": {
2026-06-21T04:47:53.7650642Z         "doc": {
2026-06-21T04:47:53.7650927Z           "complete": true,
2026-06-21T04:47:53.7651203Z           "evidence": [
2026-06-21T04:47:53.7651456Z             {
2026-06-21T04:47:53.7651785Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T04:47:53.7652099Z               "line": 395
2026-06-21T04:47:53.7652356Z             }
2026-06-21T04:47:53.7652612Z           ]
2026-06-21T04:47:53.7652864Z         },
2026-06-21T04:47:53.7653136Z         "impl": {
2026-06-21T04:47:53.7653422Z           "complete": true,
2026-06-21T04:47:53.7653709Z           "evidence": [
2026-06-21T04:47:53.7653970Z             {
2026-06-21T04:47:53.7654328Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:53.7654610Z               "line": 75
2026-06-21T04:47:53.7654859Z             }
2026-06-21T04:47:53.7655128Z           ]
2026-06-21T04:47:53.7655386Z         },
2026-06-21T04:47:53.7655648Z         "int": {
2026-06-21T04:47:53.7655948Z           "complete": false,
2026-06-21T04:47:53.7656235Z           "evidence": []
2026-06-21T04:47:53.7656488Z         },
2026-06-21T04:47:53.7656775Z         "unit": {
2026-06-21T04:47:53.7657071Z           "complete": true,
2026-06-21T04:47:53.7657354Z           "evidence": [
2026-06-21T04:47:53.7657613Z             {
2026-06-21T04:47:53.7657981Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:53.7658257Z               "line": 632
2026-06-21T04:47:53.7658515Z             }
2026-06-21T04:47:53.7658778Z           ]
2026-06-21T04:47:53.7659102Z         }
2026-06-21T04:47:53.7659364Z       }
2026-06-21T04:47:53.7659623Z     },
2026-06-21T04:47:53.7659870Z     {
2026-06-21T04:47:53.7660212Z       "id": "REQ-HAZARD-CASCADE-WIPE-GUARD",
2026-06-21T04:47:53.7660744Z       "title": "No hard-delete of a parent hosting non-empty children (6.3)",
2026-06-21T04:47:53.7661039Z       "requiredStages": [
2026-06-21T04:47:53.7661311Z         "impl",
2026-06-21T04:47:53.7661574Z         "unit"
2026-06-21T04:47:53.7661851Z       ],
2026-06-21T04:47:53.7662122Z       "stages": {
2026-06-21T04:47:53.7662384Z         "doc": {
2026-06-21T04:47:53.7662674Z           "complete": false,
2026-06-21T04:47:53.7662944Z           "evidence": []
2026-06-21T04:47:53.7663211Z         },
2026-06-21T04:47:53.7663468Z         "impl": {
2026-06-21T04:47:53.7663864Z           "complete": true,
2026-06-21T04:47:53.7664150Z           "evidence": [
2026-06-21T04:47:53.7664403Z             {
2026-06-21T04:47:53.7664785Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:53.7665057Z               "line": 172
2026-06-21T04:47:53.7665314Z             },
2026-06-21T04:47:53.7665564Z             {
2026-06-21T04:47:53.7665912Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T04:47:53.7666194Z               "line": 18
2026-06-21T04:47:53.7666457Z             },
2026-06-21T04:47:53.7666733Z             {
2026-06-21T04:47:53.7667085Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T04:47:53.7667472Z               "line": 100
2026-06-21T04:47:53.7667725Z             }
2026-06-21T04:47:53.7667986Z           ]
2026-06-21T04:47:53.7668246Z         },
2026-06-21T04:47:53.7668507Z         "int": {
2026-06-21T04:47:53.7668799Z           "complete": false,
2026-06-21T04:47:53.7669147Z           "evidence": []
2026-06-21T04:47:53.7669413Z         },
2026-06-21T04:47:53.7669677Z         "unit": {
2026-06-21T04:47:53.7669967Z           "complete": true,
2026-06-21T04:47:53.7670244Z           "evidence": [
2026-06-21T04:47:53.7670488Z             {
2026-06-21T04:47:53.7670867Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:53.7671151Z               "line": 857
2026-06-21T04:47:53.7671413Z             },
2026-06-21T04:47:53.7671661Z             {
2026-06-21T04:47:53.7672009Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T04:47:53.7672286Z               "line": 161
2026-06-21T04:47:53.7672543Z             },
2026-06-21T04:47:53.7672806Z             {
2026-06-21T04:47:53.7673154Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T04:47:53.7673443Z               "line": 233
2026-06-21T04:47:53.7673704Z             }
2026-06-21T04:47:53.7673961Z           ]
2026-06-21T04:47:53.7674223Z         }
2026-06-21T04:47:53.7674471Z       }
2026-06-21T04:47:53.7674729Z     },
2026-06-21T04:47:53.7674992Z     {
2026-06-21T04:47:53.7675359Z       "id": "REQ-HAZARD-CHILD-CONSOLE-FLASH",
2026-06-21T04:47:53.7676721Z       "title": "Console-subsystem children of the console-less daemon spawn with CREATE_NO_WINDOW, or each spawn flashes a visible blank window on the user's desktop (5.8)",
2026-06-21T04:47:53.7677022Z       "requiredStages": [
2026-06-21T04:47:53.7677294Z         "impl",
2026-06-21T04:47:53.7677561Z         "unit"
2026-06-21T04:47:53.7677818Z       ],
2026-06-21T04:47:53.7678074Z       "stages": {
2026-06-21T04:47:53.7678341Z         "doc": {
2026-06-21T04:47:53.7678626Z           "complete": true,
2026-06-21T04:47:53.7678897Z           "evidence": [
2026-06-21T04:47:53.7679240Z             {
2026-06-21T04:47:53.7679574Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T04:47:53.7679851Z               "line": 220
2026-06-21T04:47:53.7680104Z             }
2026-06-21T04:47:53.7680370Z           ]
2026-06-21T04:47:53.7680632Z         },
2026-06-21T04:47:53.7680889Z         "impl": {
2026-06-21T04:47:53.7681180Z           "complete": true,
2026-06-21T04:47:53.7681456Z           "evidence": [
2026-06-21T04:47:53.7681721Z             {
2026-06-21T04:47:53.7682102Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T04:47:53.7682380Z               "line": 316
2026-06-21T04:47:53.7682641Z             },
2026-06-21T04:47:53.7682898Z             {
2026-06-21T04:47:53.7683271Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T04:47:53.7683557Z               "line": 356
2026-06-21T04:47:53.7683822Z             },
2026-06-21T04:47:53.7684078Z             {
2026-06-21T04:47:53.7684454Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T04:47:53.7684726Z               "line": 578
2026-06-21T04:47:53.7684974Z             },
2026-06-21T04:47:53.7685237Z             {
2026-06-21T04:47:53.7685594Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T04:47:53.7685867Z               "line": 77
2026-06-21T04:47:53.7686243Z             }
2026-06-21T04:47:53.7686506Z           ]
2026-06-21T04:47:53.7686766Z         },
2026-06-21T04:47:53.7687023Z         "int": {
2026-06-21T04:47:53.7687314Z           "complete": false,
2026-06-21T04:47:53.7687615Z           "evidence": []
2026-06-21T04:47:53.7687905Z         },
2026-06-21T04:47:53.7688197Z         "unit": {
2026-06-21T04:47:53.7688507Z           "complete": true,
2026-06-21T04:47:53.7688803Z           "evidence": [
2026-06-21T04:47:53.7689167Z             {
2026-06-21T04:47:53.7689575Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T04:47:53.7689872Z               "line": 747
2026-06-21T04:47:53.7690163Z             },
2026-06-21T04:47:53.7690553Z             {
2026-06-21T04:47:53.7690930Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T04:47:53.7691201Z               "line": 785
2026-06-21T04:47:53.7691464Z             },
2026-06-21T04:47:53.7691727Z             {
2026-06-21T04:47:53.7692067Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T04:47:53.7692353Z               "line": 166
2026-06-21T04:47:53.7692611Z             }
2026-06-21T04:47:53.7692873Z           ]
2026-06-21T04:47:53.7693120Z         }
2026-06-21T04:47:53.7693369Z       }
2026-06-21T04:47:53.7693630Z     },
2026-06-21T04:47:53.7693879Z     {
2026-06-21T04:47:53.7694246Z       "id": "REQ-HAZARD-CONFLICT-BOTH-PRESERVED",
2026-06-21T04:47:53.7696020Z       "title": "A surfaced concurrent context pair is durably preserved (both versions, tracked artifacts) until a strictly dominating write clears it; no reconcile failure path discards an unmerged version (6.6, ADR-0013)",
2026-06-21T04:47:53.7696335Z       "requiredStages": [
2026-06-21T04:47:53.7696607Z         "impl",
2026-06-21T04:47:53.7696854Z         "unit"
2026-06-21T04:47:53.7697113Z       ],
2026-06-21T04:47:53.7697379Z       "stages": {
2026-06-21T04:47:53.7697641Z         "doc": {
2026-06-21T04:47:53.7697936Z           "complete": false,
2026-06-21T04:47:53.7698213Z           "evidence": []
2026-06-21T04:47:53.7698470Z         },
2026-06-21T04:47:53.7698729Z         "impl": {
2026-06-21T04:47:53.7699090Z           "complete": true,
2026-06-21T04:47:53.7699363Z           "evidence": [
2026-06-21T04:47:53.7699642Z             {
2026-06-21T04:47:53.7700027Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T04:47:53.7700299Z               "line": 22
2026-06-21T04:47:53.7700566Z             },
2026-06-21T04:47:53.7700832Z             {
2026-06-21T04:47:53.7701185Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T04:47:53.7701461Z               "line": 487
2026-06-21T04:47:53.7701720Z             },
2026-06-21T04:47:53.7701972Z             {
2026-06-21T04:47:53.7702343Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T04:47:53.7702608Z               "line": 17
2026-06-21T04:47:53.7702871Z             },
2026-06-21T04:47:53.7703128Z             {
2026-06-21T04:47:53.7703490Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T04:47:53.7703772Z               "line": 147
2026-06-21T04:47:53.7704029Z             },
2026-06-21T04:47:53.7704286Z             {
2026-06-21T04:47:53.7704672Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T04:47:53.7704938Z               "line": 226
2026-06-21T04:47:53.7705198Z             },
2026-06-21T04:47:53.7705456Z             {
2026-06-21T04:47:53.7705851Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T04:47:53.7706128Z               "line": 251
2026-06-21T04:47:53.7706386Z             },
2026-06-21T04:47:53.7706648Z             {
2026-06-21T04:47:53.7707044Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T04:47:53.7707331Z               "line": 277
2026-06-21T04:47:53.7707584Z             },
2026-06-21T04:47:53.7707848Z             {
2026-06-21T04:47:53.7708234Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T04:47:53.7708505Z               "line": 124
2026-06-21T04:47:53.7708773Z             },
2026-06-21T04:47:53.7709218Z             {
2026-06-21T04:47:53.7709603Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T04:47:53.7709890Z               "line": 224
2026-06-21T04:47:53.7710145Z             }
2026-06-21T04:47:53.7710409Z           ]
2026-06-21T04:47:53.7710663Z         },
2026-06-21T04:47:53.7710925Z         "int": {
2026-06-21T04:47:53.7711216Z           "complete": false,
2026-06-21T04:47:53.7711488Z           "evidence": []
2026-06-21T04:47:53.7711745Z         },
2026-06-21T04:47:53.7712007Z         "unit": {
2026-06-21T04:47:53.7712294Z           "complete": true,
2026-06-21T04:47:53.7712560Z           "evidence": [
2026-06-21T04:47:53.7712926Z             {
2026-06-21T04:47:53.7713291Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T04:47:53.7713559Z               "line": 63
2026-06-21T04:47:53.7713802Z             },
2026-06-21T04:47:53.7714055Z             {
2026-06-21T04:47:53.7714441Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T04:47:53.7714718Z               "line": 73
2026-06-21T04:47:53.7714981Z             },
2026-06-21T04:47:53.7715242Z             {
2026-06-21T04:47:53.7715622Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T04:47:53.7715901Z               "line": 85
2026-06-21T04:47:53.7716163Z             },
2026-06-21T04:47:53.7716426Z             {
2026-06-21T04:47:53.7716797Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T04:47:53.7717079Z               "line": 346
2026-06-21T04:47:53.7717341Z             },
2026-06-21T04:47:53.7717604Z             {
2026-06-21T04:47:53.7717975Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T04:47:53.7718253Z               "line": 281
2026-06-21T04:47:53.7718509Z             },
2026-06-21T04:47:53.7718761Z             {
2026-06-21T04:47:53.7719209Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T04:47:53.7719497Z               "line": 322
2026-06-21T04:47:53.7719763Z             },
2026-06-21T04:47:53.7720029Z             {
2026-06-21T04:47:53.7720397Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T04:47:53.7720681Z               "line": 360
2026-06-21T04:47:53.7720942Z             },
2026-06-21T04:47:53.7721199Z             {
2026-06-21T04:47:53.7721585Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T04:47:53.7721871Z               "line": 688
2026-06-21T04:47:53.7722139Z             },
2026-06-21T04:47:53.7722392Z             {
2026-06-21T04:47:53.7722773Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T04:47:53.7723054Z               "line": 397
2026-06-21T04:47:53.7723308Z             },
2026-06-21T04:47:53.7723563Z             {
2026-06-21T04:47:53.7723943Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T04:47:53.7724228Z               "line": 440
2026-06-21T04:47:53.7724485Z             }
2026-06-21T04:47:53.7724757Z           ]
2026-06-21T04:47:53.7725020Z         }
2026-06-21T04:47:53.7725283Z       }
2026-06-21T04:47:53.7725550Z     },
2026-06-21T04:47:53.7725807Z     {
2026-06-21T04:47:53.7726129Z       "id": "REQ-HAZARD-CONPTY-DSR",
2026-06-21T04:47:53.7726800Z       "title": "ConPTY reader must auto-answer DSR (ESC[6n) or all child output stalls (5.5)",
2026-06-21T04:47:53.7727090Z       "requiredStages": [
2026-06-21T04:47:53.7727357Z         "impl",
2026-06-21T04:47:53.7727630Z         "unit"
2026-06-21T04:47:53.7727873Z       ],
2026-06-21T04:47:53.7728141Z       "stages": {
2026-06-21T04:47:53.7728403Z         "doc": {
2026-06-21T04:47:53.7728689Z           "complete": false,
2026-06-21T04:47:53.7729040Z           "evidence": []
2026-06-21T04:47:53.7729292Z         },
2026-06-21T04:47:53.7729602Z         "impl": {
2026-06-21T04:47:53.7729888Z           "complete": true,
2026-06-21T04:47:53.7730171Z           "evidence": [
2026-06-21T04:47:53.7730437Z             {
2026-06-21T04:47:53.7730794Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T04:47:53.7731081Z               "line": 169
2026-06-21T04:47:53.7731459Z             }
2026-06-21T04:47:53.7731727Z           ]
2026-06-21T04:47:53.7731989Z         },
2026-06-21T04:47:53.7732256Z         "int": {
2026-06-21T04:47:53.7732537Z           "complete": true,
2026-06-21T04:47:53.7732813Z           "evidence": [
2026-06-21T04:47:53.7733070Z             {
2026-06-21T04:47:53.7733423Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-21T04:47:53.7733700Z               "line": 44
2026-06-21T04:47:53.7733962Z             },
2026-06-21T04:47:53.7734219Z             {
2026-06-21T04:47:53.7734570Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-21T04:47:53.7734851Z               "line": 66
2026-06-21T04:47:53.7735223Z             }
2026-06-21T04:47:53.7735485Z           ]
2026-06-21T04:47:53.7735747Z         },
2026-06-21T04:47:53.7736014Z         "unit": {
2026-06-21T04:47:53.7736310Z           "complete": true,
2026-06-21T04:47:53.7736590Z           "evidence": [
2026-06-21T04:47:53.7736851Z             {
2026-06-21T04:47:53.7737217Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T04:47:53.7737494Z               "line": 186
2026-06-21T04:47:53.7737761Z             },
2026-06-21T04:47:53.7738014Z             {
2026-06-21T04:47:53.7738372Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T04:47:53.7738654Z               "line": 238
2026-06-21T04:47:53.7738915Z             },
2026-06-21T04:47:53.7739321Z             {
2026-06-21T04:47:53.7739673Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T04:47:53.7739948Z               "line": 266
2026-06-21T04:47:53.7740210Z             }
2026-06-21T04:47:53.7740477Z           ]
2026-06-21T04:47:53.7740750Z         }
2026-06-21T04:47:53.7741002Z       }
2026-06-21T04:47:53.7741256Z     },
2026-06-21T04:47:53.7741508Z     {
2026-06-21T04:47:53.7741878Z       "id": "REQ-HAZARD-CONTROLLER-RETAKE-FLOOR",
2026-06-21T04:47:53.7754538Z       "title": "`become_controller` should STRUCTURALLY refuse a controller re-take whose `from_seq` falls below the connection's already-delivered contiguous floor — making the P1c reorder invariant un-reintroducible by a future caller, not just removed at the one caller. ROOT/SCOPE (doyle proposed, P1c gate dialogue): P1c fixes REQ-HAZARD-CONTROLLER-WRITER-REORDER three ways (handoff single-take + epoch-gate-under-lock + session_cursors seed), removing the one decreasing-floor double-take and bounding any other to already-committed-only. A self-enforcing broker guard would refuse the bad SHAPE outright. BLOCKER: the obvious predicate (`from_seq >= delivered_through`) is UNSAFE because `delivered_through` is SESSION-WIDE (the `Arc<AtomicU64>` on `OutputLog`, shared by all controllers/viewers, advanced monotonic-MAX; `resume_seq` reads it) — a normal fresh-operator `from_seq=0` attach to a producing session legitimately sits below it (full ring replay + consumer dedup-below/snap-above), and monotonic-MAX can't distinguish the hazard (a `seq1`-without-`seq0` write reads as `2`). The structurally-correct guard needs a NEW per-connection contiguous-sent cursor (the true highest-contiguous seq this socket has received) that does not exist today; the guard then refuses a re-take below THAT. Bigger than P1c; no live gap (P1c fully fixes the actual bug). Mint/refine stages when the per-connection cursor is built. (v0.13.0 follow-up, post-ship)",
2026-06-21T04:47:53.7754960Z       "requiredStages": [],
2026-06-21T04:47:53.7755233Z       "stages": {
2026-06-21T04:47:53.7755498Z         "doc": {
2026-06-21T04:47:53.7755780Z           "complete": false,
2026-06-21T04:47:53.7756053Z           "evidence": []
2026-06-21T04:47:53.7756319Z         },
2026-06-21T04:47:53.7756577Z         "impl": {
2026-06-21T04:47:53.7756902Z           "complete": false,
2026-06-21T04:47:53.7757183Z           "evidence": []
2026-06-21T04:47:53.7757449Z         },
2026-06-21T04:47:53.7757706Z         "int": {
2026-06-21T04:47:53.7757999Z           "complete": false,
2026-06-21T04:47:53.7758276Z           "evidence": []
2026-06-21T04:47:53.7758533Z         },
2026-06-21T04:47:53.7758924Z         "unit": {
2026-06-21T04:47:53.7759301Z           "complete": false,
2026-06-21T04:47:53.7759577Z           "evidence": []
2026-06-21T04:47:53.7759835Z         }
2026-06-21T04:47:53.7760093Z       }
2026-06-21T04:47:53.7760350Z     },
2026-06-21T04:47:53.7760606Z     {
2026-06-21T04:47:53.7760992Z       "id": "REQ-HAZARD-CONTROLLER-WRITER-REORDER",
2026-06-21T04:47:53.7801356Z       "title": "Two `controller_writer` threads must never race ONE brain↔broker connection's socket. ROOT (doyle, instrumented RACEDIAG repro on kitsubito): on a brain-restart re-serve the handoff brain registers as controller on the SAME session TWICE over the SAME `Brain::conn` socket — (1) `Brain::handoff` eagerly `subscribe(prior.session_id, prior.next_seq=1)` → `become_controller(from_seq=1)`, initial=[1], spawns writer-A (writes seq 1); (2) `serve_attach` re-handles the replayed `Request{from_seq:0}` → `attach_as(sid,0)` → `become_controller(from_seq=0)`, initial=[0,1], spawns writer-B (writes 0 then 1). `become_controller` (broker.rs) drops the prior `ControllerSink` (its `tx`) but does NOT stop the prior writer thread — writer-A keeps flushing its owned `initial` batch, and both writers hold clones of the same `SharedSend` (`Arc<Mutex<socket>>`) with NO inter-thread ordering. When writer-A's seq 1 wins the socket before writer-B's seq 0, the strict legacy consumer (brain.rs read_event reject-gap path) sees `output gap: got seq 1 want 0` → the test `attach_survives_target_brain_restart_exactly_once` panics at `.expect(\"re-serve\")` OR HANGS in `render_until` (serve thread died on the gap → MARKER_TWO never reaches the wire). `prior.next_seq` is life1's CONSUMPTION cursor, NOT life2's connection state — life2's socket has been sent NOTHING, so a `from_seq=0` full replay on a connection that already streamed seq 1 is contradictory. Snap-above tolerance ALONE can't fix it (it would dedup-drop the late seq 0 → byte loss → the exactly-once byte-identity assert fails). PRE-EXISTING, surfaced by the v0.13.0 green-both-runners release gate; P1b is INNOCENT (its diff touches only input-ack machinery, proven mechanically + the test passes post-P1b in isolation). Sibling flaky cluster: `inject_control_wedge::g2`, `broker::spawn_env_reaches_child`. INVARIANT: on a single brain↔broker connection the controller output-frame stream is monotonic non-decreasing in seq (modulo dedup re-sends); exactly ONE `controller_writer` is ever live per connection; a SUPERSEDED writer writes NO further frames; a re-serve never replays a seq below what the connection already received. FIX (doyle design, corrected at the gate 2026-06-20): fix #1 as designed ('drop handoff's eager subscribe so serve_attach's attach_as is the sole registration') was REVERTED — handoff's `subscribe(prior.next_seq)` IS the standalone-resume mechanism (the brain-only update engine `apply_brain_only` + the `handoff`/`idempotent`/`daemon_e2e` int tests replay output through it with NO `serve_attach`; dropping it hung every resume-via-handoff test). The shipped fix is three parts: (1) CORRECTNESS — `Brain::handoff` seeds `session_cursors` at `prior.next_seq` so the consumer runs the production dedup-below+snap-above path, never the strict reject-gap legacy trap; this is COMPLETE (not merely tolerant) because every `controller_writer` emits an ASCENDING seq stream and the surviving writer (serve_attach's attach_as(sid,0)) offers the complete `[0,end]` range, so a snap-above merge of ascending writers delivers `[K,end]` with no skip/dup (first sighting of any seq>M is preceded by M on that writer). (2) INVARIANT — `controller_writer`'s INITIAL-BATCH replay is epoch-gated: `controller_epoch` is a shared `Arc<AtomicU64>`, the writer re-reads it UNDER `send.lock()` (atomically with `write_frame`) and returns the instant it is superseded — no check-then-block-then-write window, no superseded replay (W1-safe: never blocks the drain under `Mutex<OutputLog>`). The LIVE loop is NOT gated (new output only flows to the current controller; a superseded writer must still deliver its terminal `Displaced` kick — gating it suppressed the loud-take notice; it ends on `tx`-drop). (3) EXPLICIT-RESUME / OPERATOR-STREAM BOUNDARY (the LOAD-BEARING fix — kitsubito RACEDIAG ~33% repro the keystones missed) — `Brain::subscribe_with` (shared by attach/attach_as) resets the resume-mode dedup cursor to `from_seq`. The handoff eager subscribe makes serve_attach's brain receive the replay's seq K BEFORE the operator Request is processed (`attached`=false); that frame is dropped by the if-attached forward gate but the snap-above cursor already advanced past K, and `attach_as(sid,0)`'s re-subscribe used to leave the cursor advanced → the broker's re-send of seq K arrives below it, deduped, never forwarded → operator viewport forward-gap (silent content loss in the real rc consumer). Resetting to from_seq on the attach_as re-subscribe re-delivers from 0 (operator dedups the overlap) so seq K reaches the viewport. The epoch gate (2) is sound (RACEDIAG: zero socket interleaving above K); cold-start brains (empty map — production dispatch serve) keep the legacy next_seq path, so production is unaffected. (v0.13.0)",
2026-06-21T04:47:53.7802348Z       "requiredStages": [
2026-06-21T04:47:53.7802620Z         "doc",
2026-06-21T04:47:53.7802884Z         "impl",
2026-06-21T04:47:53.7803147Z         "unit",
2026-06-21T04:47:53.7803400Z         "int"
2026-06-21T04:47:53.7803663Z       ],
2026-06-21T04:47:53.7803930Z       "stages": {
2026-06-21T04:47:53.7804186Z         "doc": {
2026-06-21T04:47:53.7804472Z           "complete": true,
2026-06-21T04:47:53.7804749Z           "evidence": [
2026-06-21T04:47:53.7805016Z             {
2026-06-21T04:47:53.7805356Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T04:47:53.7805666Z               "line": 468
2026-06-21T04:47:53.7805924Z             }
2026-06-21T04:47:53.7806192Z           ]
2026-06-21T04:47:53.7810572Z         },
2026-06-21T04:47:53.7810870Z         "impl": {
2026-06-21T04:47:53.7811162Z           "complete": true,
2026-06-21T04:47:53.7811481Z           "evidence": [
2026-06-21T04:47:53.7811734Z             {
2026-06-21T04:47:53.7812106Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T04:47:53.7812387Z               "line": 342
2026-06-21T04:47:53.7812650Z             },
2026-06-21T04:47:53.7812904Z             {
2026-06-21T04:47:53.7813285Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T04:47:53.7813574Z               "line": 1188
2026-06-21T04:47:53.7813841Z             },
2026-06-21T04:47:53.7814107Z             {
2026-06-21T04:47:53.7814475Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.7814766Z               "line": 715
2026-06-21T04:47:53.7815047Z             }
2026-06-21T04:47:53.7815304Z           ]
2026-06-21T04:47:53.7815557Z         },
2026-06-21T04:47:53.7815823Z         "int": {
2026-06-21T04:47:53.7816117Z           "complete": true,
2026-06-21T04:47:53.7816398Z           "evidence": [
2026-06-21T04:47:53.7816660Z             {
2026-06-21T04:47:53.7817042Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T04:47:53.7817342Z               "line": 1163
2026-06-21T04:47:53.7817604Z             },
2026-06-21T04:47:53.7817862Z             {
2026-06-21T04:47:53.7818258Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T04:47:53.7818538Z               "line": 1264
2026-06-21T04:47:53.7818802Z             },
2026-06-21T04:47:53.7819160Z             {
2026-06-21T04:47:53.7819536Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T04:47:53.7819813Z               "line": 1152
2026-06-21T04:47:53.7820081Z             }
2026-06-21T04:47:53.7820343Z           ]
2026-06-21T04:47:53.7820606Z         },
2026-06-21T04:47:53.7820878Z         "unit": {
2026-06-21T04:47:53.7821176Z           "complete": true,
2026-06-21T04:47:53.7821449Z           "evidence": [
2026-06-21T04:47:53.7821703Z             {
2026-06-21T04:47:53.7822075Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.7822361Z               "line": 2624
2026-06-21T04:47:53.7822766Z             }
2026-06-21T04:47:53.7823038Z           ]
2026-06-21T04:47:53.7823305Z         }
2026-06-21T04:47:53.7823553Z       }
2026-06-21T04:47:53.7823807Z     },
2026-06-21T04:47:53.7824052Z     {
2026-06-21T04:47:53.7824425Z       "id": "REQ-HAZARD-DAEMON-HOSTED-LIVENESS",
2026-06-21T04:47:53.7825775Z       "title": "Daemon-hosted perches (Psyche, spt-hosted Self) derive liveness from the daemon endpoint table + info.json status, never is_process_alive(info.pid) (2.5)",
2026-06-21T04:47:53.7826080Z       "requiredStages": [
2026-06-21T04:47:53.7826345Z         "impl",
2026-06-21T04:47:53.7826600Z         "unit",
2026-06-21T04:47:53.7826987Z         "int"
2026-06-21T04:47:53.7827268Z       ],
2026-06-21T04:47:53.7827563Z       "stages": {
2026-06-21T04:47:53.7827820Z         "doc": {
2026-06-21T04:47:53.7828117Z           "complete": false,
2026-06-21T04:47:53.7828392Z           "evidence": []
2026-06-21T04:47:53.7828652Z         },
2026-06-21T04:47:53.7828924Z         "impl": {
2026-06-21T04:47:53.7829293Z           "complete": true,
2026-06-21T04:47:53.7829578Z           "evidence": [
2026-06-21T04:47:53.7829830Z             {
2026-06-21T04:47:53.7830227Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:53.7830508Z               "line": 178
2026-06-21T04:47:53.7830769Z             },
2026-06-21T04:47:53.7831036Z             {
2026-06-21T04:47:53.7831409Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:53.7831697Z               "line": 226
2026-06-21T04:47:53.7831953Z             },
2026-06-21T04:47:53.7832221Z             {
2026-06-21T04:47:53.7832573Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T04:47:53.7832860Z               "line": 79
2026-06-21T04:47:53.7833126Z             },
2026-06-21T04:47:53.7833390Z             {
2026-06-21T04:47:53.7833737Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T04:47:53.7834014Z               "line": 52
2026-06-21T04:47:53.7834276Z             },
2026-06-21T04:47:53.7834550Z             {
2026-06-21T04:47:53.7834903Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T04:47:53.7835194Z               "line": 263
2026-06-21T04:47:53.7835452Z             },
2026-06-21T04:47:53.7835715Z             {
2026-06-21T04:47:53.7836096Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T04:47:53.7836382Z               "line": 27
2026-06-21T04:47:53.7836659Z             },
2026-06-21T04:47:53.7836920Z             {
2026-06-21T04:47:53.7837290Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T04:47:53.7837561Z               "line": 79
2026-06-21T04:47:53.7837818Z             },
2026-06-21T04:47:53.7838085Z             {
2026-06-21T04:47:53.7838457Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T04:47:53.7838758Z               "line": 102
2026-06-21T04:47:53.7839087Z             },
2026-06-21T04:47:53.7839363Z             {
2026-06-21T04:47:53.7839739Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T04:47:53.7840032Z               "line": 116
2026-06-21T04:47:53.7840304Z             }
2026-06-21T04:47:53.7840567Z           ]
2026-06-21T04:47:53.7840829Z         },
2026-06-21T04:47:53.7841092Z         "int": {
2026-06-21T04:47:53.7841378Z           "complete": true,
2026-06-21T04:47:53.7841659Z           "evidence": [
2026-06-21T04:47:53.7841925Z             {
2026-06-21T04:47:53.7842316Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-21T04:47:53.7842593Z               "line": 43
2026-06-21T04:47:53.7842856Z             }
2026-06-21T04:47:53.7843115Z           ]
2026-06-21T04:47:53.7843386Z         },
2026-06-21T04:47:53.7843659Z         "unit": {
2026-06-21T04:47:53.7843988Z           "complete": true,
2026-06-21T04:47:53.7844303Z           "evidence": [
2026-06-21T04:47:53.7844569Z             {
2026-06-21T04:47:53.7844960Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:53.7845240Z               "line": 678
2026-06-21T04:47:53.7845612Z             },
2026-06-21T04:47:53.7845866Z             {
2026-06-21T04:47:53.7846227Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T04:47:53.7846514Z               "line": 495
2026-06-21T04:47:53.7846776Z             },
2026-06-21T04:47:53.7847033Z             {
2026-06-21T04:47:53.7847418Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T04:47:53.7847701Z               "line": 124
2026-06-21T04:47:53.7847969Z             },
2026-06-21T04:47:53.7848231Z             {
2026-06-21T04:47:53.7848612Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T04:47:53.7848889Z               "line": 143
2026-06-21T04:47:53.7849367Z             },
2026-06-21T04:47:53.7849643Z             {
2026-06-21T04:47:53.7850021Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T04:47:53.7850285Z               "line": 160
2026-06-21T04:47:53.7850554Z             },
2026-06-21T04:47:53.7850822Z             {
2026-06-21T04:47:53.7851197Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T04:47:53.7851484Z               "line": 187
2026-06-21T04:47:53.7851751Z             },
2026-06-21T04:47:53.7852019Z             {
2026-06-21T04:47:53.7852376Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T04:47:53.7852663Z               "line": 206
2026-06-21T04:47:53.7852933Z             },
2026-06-21T04:47:53.7853198Z             {
2026-06-21T04:47:53.7853575Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T04:47:53.7853856Z               "line": 229
2026-06-21T04:47:53.7854122Z             }
2026-06-21T04:47:53.7854389Z           ]
2026-06-21T04:47:53.7854662Z         }
2026-06-21T04:47:53.7854914Z       }
2026-06-21T04:47:53.7855173Z     },
2026-06-21T04:47:53.7855440Z     {
2026-06-21T04:47:53.7855805Z       "id": "REQ-HAZARD-DAEMON-SCHED-NONBLOCKING",
2026-06-21T04:47:53.7857888Z       "title": "Per-agent pulse/psyche/echo-commune scheduling must not serialize across agents: each agent's bounded LLM call (echo-commune summarizer, Psyche turn) runs off the shared scheduler so one slow/hung call cannot stall another agent's tick (7.4)",
2026-06-21T04:47:53.7858195Z       "requiredStages": [
2026-06-21T04:47:53.7858467Z         "impl",
2026-06-21T04:47:53.7858735Z         "unit"
2026-06-21T04:47:53.7859058Z       ],
2026-06-21T04:47:53.7859335Z       "stages": {
2026-06-21T04:47:53.7859602Z         "doc": {
2026-06-21T04:47:53.7859898Z           "complete": false,
2026-06-21T04:47:53.7860173Z           "evidence": []
2026-06-21T04:47:53.7860426Z         },
2026-06-21T04:47:53.7860693Z         "impl": {
2026-06-21T04:47:53.7860982Z           "complete": true,
2026-06-21T04:47:53.7861268Z           "evidence": [
2026-06-21T04:47:53.7861540Z             {
2026-06-21T04:47:53.7861912Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.7862198Z               "line": 1174
2026-06-21T04:47:53.7862455Z             },
2026-06-21T04:47:53.7862726Z             {
2026-06-21T04:47:53.7863099Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.7863388Z               "line": 1400
2026-06-21T04:47:53.7863652Z             }
2026-06-21T04:47:53.7863920Z           ]
2026-06-21T04:47:53.7864187Z         },
2026-06-21T04:47:53.7864445Z         "int": {
2026-06-21T04:47:53.7864740Z           "complete": false,
2026-06-21T04:47:53.7865021Z           "evidence": []
2026-06-21T04:47:53.7865283Z         },
2026-06-21T04:47:53.7865556Z         "unit": {
2026-06-21T04:47:53.7865850Z           "complete": true,
2026-06-21T04:47:53.7866142Z           "evidence": [
2026-06-21T04:47:53.7866403Z             {
2026-06-21T04:47:53.7866809Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T04:47:53.7867095Z               "line": 161
2026-06-21T04:47:53.7867367Z             }
2026-06-21T04:47:53.7867624Z           ]
2026-06-21T04:47:53.7867886Z         }
2026-06-21T04:47:53.7868153Z       }
2026-06-21T04:47:53.7868395Z     },
2026-06-21T04:47:53.7868652Z     {
2026-06-21T04:47:53.7869208Z       "id": "REQ-HAZARD-DAEMON-STOP-BARRIER",
2026-06-21T04:47:53.7874351Z       "title": "B3: `spt daemon stop` then an immediate `spt daemon start` does NOT race — stop fully completes before it returns. Today request_stop (seedmap.rs:240-255) returns on the KIND_STOPPING ack (sent seedmap.rs:174-176) BEFORE the seed socket unbinds, so a following is_running ping (daemon.rs:375) wins the exit window and start reports ALREADY_RUNNING (operator: daemon stop → STOPPED then start → ALREADY_RUNNING). FIX: unbind/stop-gate the seed socket BEFORE acking KIND_STOPPING, OR request_stop waits for a ping-to-fail before returning. Unit: stop then immediate is_running()==false. (v0.12.0)",
2026-06-21T04:47:53.7874795Z       "requiredStages": [
2026-06-21T04:47:53.7875062Z         "impl",
2026-06-21T04:47:53.7875329Z         "unit"
2026-06-21T04:47:53.7875586Z       ],
2026-06-21T04:47:53.7875867Z       "stages": {
2026-06-21T04:47:53.7876135Z         "doc": {
2026-06-21T04:47:53.7876425Z           "complete": false,
2026-06-21T04:47:53.7876734Z           "evidence": []
2026-06-21T04:47:53.7876993Z         },
2026-06-21T04:47:53.7877265Z         "impl": {
2026-06-21T04:47:53.7877550Z           "complete": true,
2026-06-21T04:47:53.7877831Z           "evidence": [
2026-06-21T04:47:53.7878093Z             {
2026-06-21T04:47:53.7878471Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T04:47:53.7878756Z               "line": 257
2026-06-21T04:47:53.7879088Z             }
2026-06-21T04:47:53.7879349Z           ]
2026-06-21T04:47:53.7879602Z         },
2026-06-21T04:47:53.7879864Z         "int": {
2026-06-21T04:47:53.7880155Z           "complete": false,
2026-06-21T04:47:53.7880442Z           "evidence": []
2026-06-21T04:47:53.7880722Z         },
2026-06-21T04:47:53.7880984Z         "unit": {
2026-06-21T04:47:53.7881284Z           "complete": true,
2026-06-21T04:47:53.7881556Z           "evidence": [
2026-06-21T04:47:53.7881818Z             {
2026-06-21T04:47:53.7882202Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T04:47:53.7882487Z               "line": 360
2026-06-21T04:47:53.7882760Z             }
2026-06-21T04:47:53.7883027Z           ]
2026-06-21T04:47:53.7883279Z         }
2026-06-21T04:47:53.7883546Z       }
2026-06-21T04:47:53.7883803Z     },
2026-06-21T04:47:53.7884061Z     {
2026-06-21T04:47:53.7884399Z       "id": "REQ-HAZARD-DAEMON-STOP-REAP",
2026-06-21T04:47:53.7889687Z       "title": "Breap: `spt daemon stop` REAPS the spt-hosted children it spawned — no orphaned psyche/harness processes. Today a stop leaves ~8 orphaned claude-spt-psyche.exe + spt.exe: Psyches are spawned DETACHED (runtime.rs:342-356, the Child is dropped — 'Detached' ~349) and the livehost stop flag Arc<AtomicBool> is NEVER raised (brainproc.rs:227-230 holds it 'for symmetry'). FIX: on stop, raise the livehost stop flag AND kill the spawned psyche/spt-hosted children — via a Windows job object / Unix process-group so the children die with the daemon (not detached-immortal). Folds with B3 (both the stop path). (v0.12.0)",
2026-06-21T04:47:53.7890028Z       "requiredStages": [
2026-06-21T04:47:53.7890290Z         "impl",
2026-06-21T04:47:53.7890552Z         "unit"
2026-06-21T04:47:53.7890806Z       ],
2026-06-21T04:47:53.7891068Z       "stages": {
2026-06-21T04:47:53.7891335Z         "doc": {
2026-06-21T04:47:53.7891631Z           "complete": false,
2026-06-21T04:47:53.7891908Z           "evidence": []
2026-06-21T04:47:53.7892174Z         },
2026-06-21T04:47:53.7892449Z         "impl": {
2026-06-21T04:47:53.7892738Z           "complete": true,
2026-06-21T04:47:53.7893020Z           "evidence": [
2026-06-21T04:47:53.7893277Z             {
2026-06-21T04:47:53.7893696Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.7893982Z               "line": 1018
2026-06-21T04:47:53.7894250Z             },
2026-06-21T04:47:53.7894518Z             {
2026-06-21T04:47:53.7894889Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.7895178Z               "line": 283
2026-06-21T04:47:53.7895553Z             },
2026-06-21T04:47:53.7895811Z             {
2026-06-21T04:47:53.7896187Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.7896468Z               "line": 316
2026-06-21T04:47:53.7896736Z             },
2026-06-21T04:47:53.7896997Z             {
2026-06-21T04:47:53.7897361Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T04:47:53.7897637Z               "line": 26
2026-06-21T04:47:53.7897897Z             }
2026-06-21T04:47:53.7898169Z           ]
2026-06-21T04:47:53.7898427Z         },
2026-06-21T04:47:53.7898704Z         "int": {
2026-06-21T04:47:53.7899076Z           "complete": false,
2026-06-21T04:47:53.7899467Z           "evidence": []
2026-06-21T04:47:53.7899733Z         },
2026-06-21T04:47:53.7900006Z         "unit": {
2026-06-21T04:47:53.7900285Z           "complete": true,
2026-06-21T04:47:53.7900560Z           "evidence": [
2026-06-21T04:47:53.7900831Z             {
2026-06-21T04:47:53.7901189Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T04:47:53.7901504Z               "line": 271
2026-06-21T04:47:53.7901799Z             },
2026-06-21T04:47:53.7902071Z             {
2026-06-21T04:47:53.7902429Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T04:47:53.7902715Z               "line": 348
2026-06-21T04:47:53.7902981Z             }
2026-06-21T04:47:53.7903237Z           ]
2026-06-21T04:47:53.7903499Z         }
2026-06-21T04:47:53.7903751Z       }
2026-06-21T04:47:53.7904008Z     },
2026-06-21T04:47:53.7904270Z     {
2026-06-21T04:47:53.7904595Z       "id": "REQ-HAZARD-DEFERRED-DRAIN",
2026-06-21T04:47:53.7905185Z       "title": "Deferred spool rows excluded from the event-stream drain (1.4)",
2026-06-21T04:47:53.7905472Z       "requiredStages": [
2026-06-21T04:47:53.7905748Z         "impl",
2026-06-21T04:47:53.7906012Z         "unit"
2026-06-21T04:47:53.7906279Z       ],
2026-06-21T04:47:53.7906556Z       "stages": {
2026-06-21T04:47:53.7906828Z         "doc": {
2026-06-21T04:47:53.7907124Z           "complete": false,
2026-06-21T04:47:53.7907405Z           "evidence": []
2026-06-21T04:47:53.7907673Z         },
2026-06-21T04:47:53.7907935Z         "impl": {
2026-06-21T04:47:53.7908231Z           "complete": true,
2026-06-21T04:47:53.7908519Z           "evidence": [
2026-06-21T04:47:53.7908782Z             {
2026-06-21T04:47:53.7909227Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T04:47:53.7909511Z               "line": 40
2026-06-21T04:47:53.7909773Z             },
2026-06-21T04:47:53.7910027Z             {
2026-06-21T04:47:53.7910389Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T04:47:53.7910674Z               "line": 103
2026-06-21T04:47:53.7910944Z             },
2026-06-21T04:47:53.7911202Z             {
2026-06-21T04:47:53.7911559Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T04:47:53.7911845Z               "line": 218
2026-06-21T04:47:53.7912112Z             },
2026-06-21T04:47:53.7912378Z             {
2026-06-21T04:47:53.7912737Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T04:47:53.7913013Z               "line": 323
2026-06-21T04:47:53.7913279Z             }
2026-06-21T04:47:53.7913550Z           ]
2026-06-21T04:47:53.7913816Z         },
2026-06-21T04:47:53.7914083Z         "int": {
2026-06-21T04:47:53.7914379Z           "complete": false,
2026-06-21T04:47:53.7914665Z           "evidence": []
2026-06-21T04:47:53.7914921Z         },
2026-06-21T04:47:53.7915188Z         "unit": {
2026-06-21T04:47:53.7915475Z           "complete": true,
2026-06-21T04:47:53.7915760Z           "evidence": [
2026-06-21T04:47:53.7916010Z             {
2026-06-21T04:47:53.7916378Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T04:47:53.7916664Z               "line": 361
2026-06-21T04:47:53.7916927Z             },
2026-06-21T04:47:53.7917193Z             {
2026-06-21T04:47:53.7917546Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T04:47:53.7917832Z               "line": 433
2026-06-21T04:47:53.7918205Z             },
2026-06-21T04:47:53.7918476Z             {
2026-06-21T04:47:53.7918839Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T04:47:53.7919195Z               "line": 496
2026-06-21T04:47:53.7919461Z             },
2026-06-21T04:47:53.7919728Z             {
2026-06-21T04:47:53.7920086Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T04:47:53.7920367Z               "line": 517
2026-06-21T04:47:53.7920634Z             }
2026-06-21T04:47:53.7920934Z           ]
2026-06-21T04:47:53.7921196Z         }
2026-06-21T04:47:53.7921448Z       }
2026-06-21T04:47:53.7921694Z     },
2026-06-21T04:47:53.7921951Z     {
2026-06-21T04:47:53.7922439Z       "id": "REQ-HAZARD-DEFERRED-MANIFEST",
2026-06-21T04:47:53.7929201Z       "title": "A pointer-mode (delegated / GhReleaseManaged) adapter whose binary/manifest is not yet extracted is reported with a CLEAR diagnostic, never silently dropped. Today such an adapter reads its manifest LIVE from source_dir (registry.rs manifest_dir ~146/149); a deferred / un-extracted install makes load_manifest fail → registered() (~410, filter_map(.ok())) SILENTLY DROPS the row → downstream ADAPTER_UNRESOLVED + a cryptic os-error-2 on `spt adapter use`. FIX: surface a clear diagnostic at the resolver + at `adapter use` (name the adapter + the deferred/missing-manifest cause + the fix), not a silent filter-drop and not a bare os-error-2; consider an eager manifest copy at register time so host_binaries survive before the binary download completes. doyle Finding A. (post-v0.10.0)",
2026-06-21T04:47:53.7929535Z       "requiredStages": [
2026-06-21T04:47:53.7929794Z         "impl",
2026-06-21T04:47:53.7930079Z         "unit"
2026-06-21T04:47:53.7930347Z       ],
2026-06-21T04:47:53.7930608Z       "stages": {
2026-06-21T04:47:53.7930874Z         "doc": {
2026-06-21T04:47:53.7931156Z           "complete": false,
2026-06-21T04:47:53.7931442Z           "evidence": []
2026-06-21T04:47:53.7931714Z         },
2026-06-21T04:47:53.7931980Z         "impl": {
2026-06-21T04:47:53.7932293Z           "complete": true,
2026-06-21T04:47:53.7932559Z           "evidence": [
2026-06-21T04:47:53.7932826Z             {
2026-06-21T04:47:53.7933209Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T04:47:53.7933494Z               "line": 402
2026-06-21T04:47:53.7933775Z             },
2026-06-21T04:47:53.7934028Z             {
2026-06-21T04:47:53.7934419Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T04:47:53.7934694Z               "line": 446
2026-06-21T04:47:53.7934959Z             }
2026-06-21T04:47:53.7935222Z           ]
2026-06-21T04:47:53.7935480Z         },
2026-06-21T04:47:53.7935756Z         "int": {
2026-06-21T04:47:53.7936042Z           "complete": false,
2026-06-21T04:47:53.7936327Z           "evidence": []
2026-06-21T04:47:53.7936590Z         },
2026-06-21T04:47:53.7936862Z         "unit": {
2026-06-21T04:47:53.7937153Z           "complete": true,
2026-06-21T04:47:53.7937433Z           "evidence": [
2026-06-21T04:47:53.7937707Z             {
2026-06-21T04:47:53.7938090Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T04:47:53.7938376Z               "line": 910
2026-06-21T04:47:53.7938623Z             }
2026-06-21T04:47:53.7938885Z           ]
2026-06-21T04:47:53.7939224Z         }
2026-06-21T04:47:53.7939491Z       }
2026-06-21T04:47:53.7939748Z     },
2026-06-21T04:47:53.7940007Z     {
2026-06-21T04:47:53.7940368Z       "id": "REQ-HAZARD-DEFERRED-SURVIVE-DRAIN",
2026-06-21T04:47:53.7940748Z       "title": "Deferred rows survive poll drain (4.4)",
2026-06-21T04:47:53.7941049Z       "requiredStages": [
2026-06-21T04:47:53.7941306Z         "impl",
2026-06-21T04:47:53.7941589Z         "unit"
2026-06-21T04:47:53.7941851Z       ],
2026-06-21T04:47:53.7942117Z       "stages": {
2026-06-21T04:47:53.7942383Z         "doc": {
2026-06-21T04:47:53.7942671Z           "complete": false,
2026-06-21T04:47:53.7942958Z           "evidence": []
2026-06-21T04:47:53.7943220Z         },
2026-06-21T04:47:53.7943606Z         "impl": {
2026-06-21T04:47:53.7943897Z           "complete": true,
2026-06-21T04:47:53.7944231Z           "evidence": [
2026-06-21T04:47:53.7944502Z             {
2026-06-21T04:47:53.7944855Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T04:47:53.7945137Z               "line": 116
2026-06-21T04:47:53.7945393Z             },
2026-06-21T04:47:53.7945663Z             {
2026-06-21T04:47:53.7946026Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T04:47:53.7946311Z               "line": 211
2026-06-21T04:47:53.7946577Z             }
2026-06-21T04:47:53.7946835Z           ]
2026-06-21T04:47:53.7947103Z         },
2026-06-21T04:47:53.7947479Z         "int": {
2026-06-21T04:47:53.7947784Z           "complete": false,
2026-06-21T04:47:53.7948068Z           "evidence": []
2026-06-21T04:47:53.7948330Z         },
2026-06-21T04:47:53.7948602Z         "unit": {
2026-06-21T04:47:53.7948883Z           "complete": true,
2026-06-21T04:47:53.7949245Z           "evidence": [
2026-06-21T04:47:53.7949507Z             {
2026-06-21T04:47:53.7949866Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T04:47:53.7950152Z               "line": 388
2026-06-21T04:47:53.7950403Z             },
2026-06-21T04:47:53.7950674Z             {
2026-06-21T04:47:53.7951027Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T04:47:53.7951304Z               "line": 469
2026-06-21T04:47:53.7951561Z             }
2026-06-21T04:47:53.7951829Z           ]
2026-06-21T04:47:53.7952091Z         }
2026-06-21T04:47:53.7952343Z       }
2026-06-21T04:47:53.7952601Z     },
2026-06-21T04:47:53.7952853Z     {
2026-06-21T04:47:53.7953212Z       "id": "REQ-HAZARD-DETACHED-PIPE-INHERIT",
2026-06-21T04:47:53.7956371Z       "title": "Windows detached long-lived children must not inherit a captured caller's pipe: every detach-spawn of an immortal child (daemon, shell binary) runs bInheritHandles=FALSE, or a caller capturing output anywhere up the process chain hangs forever on a pipe that never EOFs — std-handle flag stripping is NOT sufficient (grandparent strays still flow) (5.6)",
2026-06-21T04:47:53.7956686Z       "requiredStages": [
2026-06-21T04:47:53.7956948Z         "impl",
2026-06-21T04:47:53.7957205Z         "unit"
2026-06-21T04:47:53.7957472Z       ],
2026-06-21T04:47:53.7957739Z       "stages": {
2026-06-21T04:47:53.7958015Z         "doc": {
2026-06-21T04:47:53.7958292Z           "complete": true,
2026-06-21T04:47:53.7958562Z           "evidence": [
2026-06-21T04:47:53.7958823Z             {
2026-06-21T04:47:53.7959229Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T04:47:53.7959514Z               "line": 206
2026-06-21T04:47:53.7959792Z             }
2026-06-21T04:47:53.7960048Z           ]
2026-06-21T04:47:53.7960325Z         },
2026-06-21T04:47:53.7960592Z         "impl": {
2026-06-21T04:47:53.7960892Z           "complete": true,
2026-06-21T04:47:53.7961169Z           "evidence": [
2026-06-21T04:47:53.7961436Z             {
2026-06-21T04:47:53.7961802Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.7962122Z               "line": 691
2026-06-21T04:47:53.7962394Z             },
2026-06-21T04:47:53.7962657Z             {
2026-06-21T04:47:53.7963033Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.7963315Z               "line": 791
2026-06-21T04:47:53.7963584Z             },
2026-06-21T04:47:53.7963830Z             {
2026-06-21T04:47:53.7964211Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.7964502Z               "line": 1120
2026-06-21T04:47:53.7964764Z             },
2026-06-21T04:47:53.7965022Z             {
2026-06-21T04:47:53.7965408Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T04:47:53.7965699Z               "line": 184
2026-06-21T04:47:53.7965961Z             }
2026-06-21T04:47:53.7966230Z           ]
2026-06-21T04:47:53.7966499Z         },
2026-06-21T04:47:53.7966763Z         "int": {
2026-06-21T04:47:53.7967054Z           "complete": false,
2026-06-21T04:47:53.7967470Z           "evidence": []
2026-06-21T04:47:53.7967732Z         },
2026-06-21T04:47:53.7967994Z         "unit": {
2026-06-21T04:47:53.7968284Z           "complete": true,
2026-06-21T04:47:53.7968561Z           "evidence": [
2026-06-21T04:47:53.7968819Z             {
2026-06-21T04:47:53.7969282Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.7969573Z               "line": 1169
2026-06-21T04:47:53.7969846Z             },
2026-06-21T04:47:53.7970103Z             {
2026-06-21T04:47:53.7970499Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T04:47:53.7970775Z               "line": 44
2026-06-21T04:47:53.7971137Z             },
2026-06-21T04:47:53.7971409Z             {
2026-06-21T04:47:53.7971800Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-21T04:47:53.7972086Z               "line": 52
2026-06-21T04:47:53.7972353Z             },
2026-06-21T04:47:53.7972615Z             {
2026-06-21T04:47:53.7972968Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T04:47:53.7973250Z               "line": 57
2026-06-21T04:47:53.7973512Z             },
2026-06-21T04:47:53.7973773Z             {
2026-06-21T04:47:53.7974183Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-21T04:47:53.7974456Z               "line": 54
2026-06-21T04:47:53.7974718Z             }
2026-06-21T04:47:53.7974982Z           ]
2026-06-21T04:47:53.7975239Z         }
2026-06-21T04:47:53.7975507Z       }
2026-06-21T04:47:53.7975759Z     },
2026-06-21T04:47:53.7976025Z     {
2026-06-21T04:47:53.7976394Z       "id": "REQ-HAZARD-DIRECT-WRITE-PRECEDENCE",
2026-06-21T04:47:53.7977064Z       "title": "Direct-write precedence marker (with node id) guards stale overwrite (6.5)",
2026-06-21T04:47:53.7977376Z       "requiredStages": [
2026-06-21T04:47:53.7977643Z         "impl",
2026-06-21T04:47:53.7977915Z         "unit"
2026-06-21T04:47:53.7978168Z       ],
2026-06-21T04:47:53.7978439Z       "stages": {
2026-06-21T04:47:53.7978703Z         "doc": {
2026-06-21T04:47:53.7979088Z           "complete": false,
2026-06-21T04:47:53.7979380Z           "evidence": []
2026-06-21T04:47:53.7979645Z         },
2026-06-21T04:47:53.7979915Z         "impl": {
2026-06-21T04:47:53.7980200Z           "complete": true,
2026-06-21T04:47:53.7980482Z           "evidence": [
2026-06-21T04:47:53.7980744Z             {
2026-06-21T04:47:53.7981116Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T04:47:53.7981402Z               "line": 26
2026-06-21T04:47:53.7981659Z             },
2026-06-21T04:47:53.7981918Z             {
2026-06-21T04:47:53.7982270Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T04:47:53.7982556Z               "line": 135
2026-06-21T04:47:53.7982818Z             },
2026-06-21T04:47:53.7983084Z             {
2026-06-21T04:47:53.7983472Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T04:47:53.7983752Z               "line": 26
2026-06-21T04:47:53.7984014Z             },
2026-06-21T04:47:53.7984291Z             {
2026-06-21T04:47:53.7984685Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T04:47:53.7984969Z               "line": 237
2026-06-21T04:47:53.7985227Z             }
2026-06-21T04:47:53.7985480Z           ]
2026-06-21T04:47:53.7985738Z         },
2026-06-21T04:47:53.7986005Z         "int": {
2026-06-21T04:47:53.7986300Z           "complete": false,
2026-06-21T04:47:53.7986590Z           "evidence": []
2026-06-21T04:47:53.7986844Z         },
2026-06-21T04:47:53.7987115Z         "unit": {
2026-06-21T04:47:53.7987406Z           "complete": true,
2026-06-21T04:47:53.7987681Z           "evidence": [
2026-06-21T04:47:53.7987942Z             {
2026-06-21T04:47:53.7988309Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T04:47:53.7988595Z               "line": 161
2026-06-21T04:47:53.7988852Z             },
2026-06-21T04:47:53.7989206Z             {
2026-06-21T04:47:53.7989573Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T04:47:53.7989959Z               "line": 170
2026-06-21T04:47:53.7990224Z             },
2026-06-21T04:47:53.7990480Z             {
2026-06-21T04:47:53.7990838Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T04:47:53.7991124Z               "line": 179
2026-06-21T04:47:53.7991385Z             },
2026-06-21T04:47:53.7991652Z             {
2026-06-21T04:47:53.7992015Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T04:47:53.7992296Z               "line": 190
2026-06-21T04:47:53.7992562Z             },
2026-06-21T04:47:53.7992826Z             {
2026-06-21T04:47:53.7993196Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T04:47:53.7993582Z               "line": 199
2026-06-21T04:47:53.7993845Z             },
2026-06-21T04:47:53.7994107Z             {
2026-06-21T04:47:53.7994498Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T04:47:53.7994803Z               "line": 216
2026-06-21T04:47:53.7995061Z             },
2026-06-21T04:47:53.7995332Z             {
2026-06-21T04:47:53.7995688Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T04:47:53.7995978Z               "line": 242
2026-06-21T04:47:53.7996240Z             },
2026-06-21T04:47:53.7996506Z             {
2026-06-21T04:47:53.7996855Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T04:47:53.7997140Z               "line": 295
2026-06-21T04:47:53.7997404Z             },
2026-06-21T04:47:53.7997665Z             {
2026-06-21T04:47:53.7998027Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T04:47:53.7998311Z               "line": 244
2026-06-21T04:47:53.7998579Z             },
2026-06-21T04:47:53.7998831Z             {
2026-06-21T04:47:53.7999298Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T04:47:53.7999584Z               "line": 265
2026-06-21T04:47:53.7999842Z             },
2026-06-21T04:47:53.8000100Z             {
2026-06-21T04:47:53.8000476Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T04:47:53.8000765Z               "line": 293
2026-06-21T04:47:53.8001025Z             },
2026-06-21T04:47:53.8001292Z             {
2026-06-21T04:47:53.8001684Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T04:47:53.8001955Z               "line": 317
2026-06-21T04:47:53.8002217Z             },
2026-06-21T04:47:53.8002480Z             {
2026-06-21T04:47:53.8002870Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T04:47:53.8003147Z               "line": 327
2026-06-21T04:47:53.8003419Z             },
2026-06-21T04:47:53.8003681Z             {
2026-06-21T04:47:53.8004053Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T04:47:53.8004348Z               "line": 540
2026-06-21T04:47:53.8004606Z             }
2026-06-21T04:47:53.8004873Z           ]
2026-06-21T04:47:53.8005134Z         }
2026-06-21T04:47:53.8005397Z       }
2026-06-21T04:47:53.8005649Z     },
2026-06-21T04:47:53.8005906Z     {
2026-06-21T04:47:53.8006300Z       "id": "REQ-HAZARD-DRIVEN-BY-IDLE-REMOTE-EVICT",
2026-06-21T04:47:53.8020285Z       "title": "An spt-hosted endpoint driven by a REMOTE controller whose remote is gone but whose broker connection stays OPEN (a wedged/lost pump that never delivers the detach) AND whose session is IDLE (no output) stays latched ONLINE+CONTROLLED forever: the W1 drain-evict only fires on OUTPUT (CONTROLLER_WRITE_DEADLINE on a backed-up write), a clean disconnect self-heals via detach_if→clear_controller, but an idle session with a half-open/wedged controller connection produces neither signal. PROVED repro-first on a real broker (v0.13.0 W5, inject_control_wedge.rs w5_a2): controller_by STAYS Some(origin) and driven_by STAYS Some after the remote is abandoned without a clean EOF on an idle session — so the brain reconcile CANNOT detect it from KIND_SESSIONS controller_by (the broker still reports it controlled). FIX DIRECTION (doyle ruling 2026-06-19, broker-side single-writer — the broker owns driven_by/clear_controller): wire the EXISTING D4c NetPresence connection-disconnect event → clear_controller for any session whose controller identity == the dead origin (become_controller already stores Some(origin); presence events already exist — modest wiring, NOT a new probe). The liveness ORACLE is QUIC's own keepalive/idle-timeout: a presence-disconnect IS a real QUIC conn close, already tolerant of transient blips within the keepalive window, so NO heavy partition ADR is needed UNLESS the QUIC timeout proves too slow for the UX (then mint an ADR for a faster controller-heartbeat + its false-evict bound). Composes with W1 (output path) + W5 Gap B (no-session) — this is the third, idle-remote, leg. (v0.13.0 follow-up)",
2026-06-21T04:47:53.8020920Z       "requiredStages": [],
2026-06-21T04:47:53.8021186Z       "stages": {
2026-06-21T04:47:53.8021448Z         "doc": {
2026-06-21T04:47:53.8021742Z           "complete": false,
2026-06-21T04:47:53.8022027Z           "evidence": []
2026-06-21T04:47:53.8022290Z         },
2026-06-21T04:47:53.8022561Z         "impl": {
2026-06-21T04:47:53.8022875Z           "complete": false,
2026-06-21T04:47:53.8023153Z           "evidence": []
2026-06-21T04:47:53.8023414Z         },
2026-06-21T04:47:53.8023676Z         "int": {
2026-06-21T04:47:53.8023972Z           "complete": false,
2026-06-21T04:47:53.8024253Z           "evidence": []
2026-06-21T04:47:53.8024511Z         },
2026-06-21T04:47:53.8024777Z         "unit": {
2026-06-21T04:47:53.8025063Z           "complete": false,
2026-06-21T04:47:53.8025344Z           "evidence": []
2026-06-21T04:47:53.8025610Z         }
2026-06-21T04:47:53.8025874Z       }
2026-06-21T04:47:53.8026131Z     },
2026-06-21T04:47:53.8026389Z     {
2026-06-21T04:47:53.8026737Z       "id": "REQ-HAZARD-DRIVEN-BY-SELFHEAL",
2026-06-21T04:47:53.8031207Z       "title": "An spt-hosted endpoint's ONLINE+CONTROLLED state (`driven_by`) must CLEAR even when the detach IPC is lost — do NOT rely on the detach signal (same lesson as REQ-HAZARD-HOSTED-LIVENESS-RECONCILE B2): the reconcile loop clears `driven_by` when the endpoint has no live controller/session. Today a wedged or lost pump never delivers the detach, so the endpoint stays latched CONTROLLED forever. Composes with W1 (the wedge no longer blocks the detach) and rides the same pull-primary reconcile substrate as B2. (v0.13.0)",
2026-06-21T04:47:53.8031541Z       "requiredStages": [
2026-06-21T04:47:53.8031814Z         "impl",
2026-06-21T04:47:53.8032081Z         "unit",
2026-06-21T04:47:53.8032350Z         "int"
2026-06-21T04:47:53.8032596Z       ],
2026-06-21T04:47:53.8032873Z       "stages": {
2026-06-21T04:47:53.8033136Z         "doc": {
2026-06-21T04:47:53.8033426Z           "complete": false,
2026-06-21T04:47:53.8033713Z           "evidence": []
2026-06-21T04:47:53.8033984Z         },
2026-06-21T04:47:53.8034250Z         "impl": {
2026-06-21T04:47:53.8034541Z           "complete": true,
2026-06-21T04:47:53.8034822Z           "evidence": [
2026-06-21T04:47:53.8035080Z             {
2026-06-21T04:47:53.8035466Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.8035757Z               "line": 538
2026-06-21T04:47:53.8036019Z             },
2026-06-21T04:47:53.8036281Z             {
2026-06-21T04:47:53.8036639Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T04:47:53.8036921Z               "line": 625
2026-06-21T04:47:53.8037187Z             },
2026-06-21T04:47:53.8037458Z             {
2026-06-21T04:47:53.8037909Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T04:47:53.8038190Z               "line": 21
2026-06-21T04:47:53.8038456Z             }
2026-06-21T04:47:53.8038713Z           ]
2026-06-21T04:47:53.8039057Z         },
2026-06-21T04:47:53.8039315Z         "int": {
2026-06-21T04:47:53.8039615Z           "complete": true,
2026-06-21T04:47:53.8039896Z           "evidence": [
2026-06-21T04:47:53.8040160Z             {
2026-06-21T04:47:53.8040604Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T04:47:53.8044782Z               "line": 236
2026-06-21T04:47:53.8045265Z             },
2026-06-21T04:47:53.8045532Z             {
2026-06-21T04:47:53.8046007Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T04:47:53.8046298Z               "line": 396
2026-06-21T04:47:53.8046565Z             },
2026-06-21T04:47:53.8046833Z             {
2026-06-21T04:47:53.8047284Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T04:47:53.8047566Z               "line": 1488
2026-06-21T04:47:53.8047838Z             },
2026-06-21T04:47:53.8048099Z             {
2026-06-21T04:47:53.8048554Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T04:47:53.8049026Z               "line": 1640
2026-06-21T04:47:53.8049293Z             }
2026-06-21T04:47:53.8049588Z           ]
2026-06-21T04:47:53.8049856Z         },
2026-06-21T04:47:53.8050123Z         "unit": {
2026-06-21T04:47:53.8050405Z           "complete": true,
2026-06-21T04:47:53.8050687Z           "evidence": [
2026-06-21T04:47:53.8050947Z             {
2026-06-21T04:47:53.8051341Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.8051622Z               "line": 887
2026-06-21T04:47:53.8051888Z             }
2026-06-21T04:47:53.8052155Z           ]
2026-06-21T04:47:53.8052414Z         }
2026-06-21T04:47:53.8052680Z       }
2026-06-21T04:47:53.8052934Z     },
2026-06-21T04:47:53.8053197Z     {
2026-06-21T04:47:53.8053566Z       "id": "REQ-HAZARD-DROP-FILE-SINGLE-WRITER",
2026-06-21T04:47:53.8054031Z       "title": "Drop files are daemon-owned single-writer (6.4)",
2026-06-21T04:47:53.8054318Z       "requiredStages": [
2026-06-21T04:47:53.8054589Z         "impl",
2026-06-21T04:47:53.8054862Z         "unit"
2026-06-21T04:47:53.8055119Z       ],
2026-06-21T04:47:53.8055381Z       "stages": {
2026-06-21T04:47:53.8055643Z         "doc": {
2026-06-21T04:47:53.8055938Z           "complete": false,
2026-06-21T04:47:53.8056228Z           "evidence": []
2026-06-21T04:47:53.8056491Z         },
2026-06-21T04:47:53.8056763Z         "impl": {
2026-06-21T04:47:53.8057059Z           "complete": true,
2026-06-21T04:47:53.8057340Z           "evidence": [
2026-06-21T04:47:53.8057596Z             {
2026-06-21T04:47:53.8057954Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T04:47:53.8058231Z               "line": 25
2026-06-21T04:47:53.8058493Z             },
2026-06-21T04:47:53.8058763Z             {
2026-06-21T04:47:53.8059181Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T04:47:53.8059467Z               "line": 26
2026-06-21T04:47:53.8059721Z             },
2026-06-21T04:47:53.8059988Z             {
2026-06-21T04:47:53.8060345Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T04:47:53.8060632Z               "line": 159
2026-06-21T04:47:53.8060899Z             }
2026-06-21T04:47:53.8061156Z           ]
2026-06-21T04:47:53.8061416Z         },
2026-06-21T04:47:53.8061681Z         "int": {
2026-06-21T04:47:53.8061973Z           "complete": false,
2026-06-21T04:47:53.8062263Z           "evidence": []
2026-06-21T04:47:53.8062531Z         },
2026-06-21T04:47:53.8062812Z         "unit": {
2026-06-21T04:47:53.8063097Z           "complete": true,
2026-06-21T04:47:53.8063379Z           "evidence": [
2026-06-21T04:47:53.8063641Z             {
2026-06-21T04:47:53.8063988Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T04:47:53.8064262Z               "line": 188
2026-06-21T04:47:53.8064526Z             },
2026-06-21T04:47:53.8064783Z             {
2026-06-21T04:47:53.8065130Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T04:47:53.8065427Z               "line": 240
2026-06-21T04:47:53.8065679Z             },
2026-06-21T04:47:53.8065964Z             {
2026-06-21T04:47:53.8066362Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T04:47:53.8066676Z               "line": 186
2026-06-21T04:47:53.8066936Z             }
2026-06-21T04:47:53.8067198Z           ]
2026-06-21T04:47:53.8067465Z         }
2026-06-21T04:47:53.8067714Z       }
2026-06-21T04:47:53.8067977Z     },
2026-06-21T04:47:53.8068348Z     {
2026-06-21T04:47:53.8068667Z       "id": "REQ-HAZARD-EBUSY-RENAME",
2026-06-21T04:47:53.8069243Z       "title": "tmp-write + atomic-rename + retry on Windows EBUSY (5.2)",
2026-06-21T04:47:53.8069536Z       "requiredStages": [
2026-06-21T04:47:53.8069813Z         "impl",
2026-06-21T04:47:53.8070070Z         "unit"
2026-06-21T04:47:53.8070332Z       ],
2026-06-21T04:47:53.8070590Z       "stages": {
2026-06-21T04:47:53.8070853Z         "doc": {
2026-06-21T04:47:53.8071140Z           "complete": false,
2026-06-21T04:47:53.8071420Z           "evidence": []
2026-06-21T04:47:53.8071687Z         },
2026-06-21T04:47:53.8071953Z         "impl": {
2026-06-21T04:47:53.8072350Z           "complete": true,
2026-06-21T04:47:53.8072636Z           "evidence": [
2026-06-21T04:47:53.8072895Z             {
2026-06-21T04:47:53.8073266Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T04:47:53.8073534Z               "line": 48
2026-06-21T04:47:53.8073801Z             },
2026-06-21T04:47:53.8074068Z             {
2026-06-21T04:47:53.8074417Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T04:47:53.8074691Z               "line": 55
2026-06-21T04:47:53.8074956Z             },
2026-06-21T04:47:53.8075222Z             {
2026-06-21T04:47:53.8075585Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T04:47:53.8075866Z               "line": 74
2026-06-21T04:47:53.8076176Z             },
2026-06-21T04:47:53.8076444Z             {
2026-06-21T04:47:53.8076811Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T04:47:53.8077087Z               "line": 91
2026-06-21T04:47:53.8077363Z             }
2026-06-21T04:47:53.8077636Z           ]
2026-06-21T04:47:53.8077898Z         },
2026-06-21T04:47:53.8078164Z         "int": {
2026-06-21T04:47:53.8078464Z           "complete": false,
2026-06-21T04:47:53.8078746Z           "evidence": []
2026-06-21T04:47:53.8079109Z         },
2026-06-21T04:47:53.8079360Z         "unit": {
2026-06-21T04:47:53.8079656Z           "complete": true,
2026-06-21T04:47:53.8079934Z           "evidence": [
2026-06-21T04:47:53.8080202Z             {
2026-06-21T04:47:53.8080559Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T04:47:53.8080845Z               "line": 149
2026-06-21T04:47:53.8081099Z             },
2026-06-21T04:47:53.8081356Z             {
2026-06-21T04:47:53.8081724Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T04:47:53.8082005Z               "line": 166
2026-06-21T04:47:53.8082261Z             },
2026-06-21T04:47:53.8082532Z             {
2026-06-21T04:47:53.8082896Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T04:47:53.8083183Z               "line": 176
2026-06-21T04:47:53.8083441Z             },
2026-06-21T04:47:53.8083708Z             {
2026-06-21T04:47:53.8084065Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T04:47:53.8084347Z               "line": 194
2026-06-21T04:47:53.8084614Z             },
2026-06-21T04:47:53.8084872Z             {
2026-06-21T04:47:53.8085228Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T04:47:53.8085511Z               "line": 207
2026-06-21T04:47:53.8085778Z             }
2026-06-21T04:47:53.8086040Z           ]
2026-06-21T04:47:53.8086303Z         }
2026-06-21T04:47:53.8086561Z       }
2026-06-21T04:47:53.8086814Z     },
2026-06-21T04:47:53.8087070Z     {
2026-06-21T04:47:53.8087424Z       "id": "REQ-HAZARD-ECHO-BEFORE-SIGNOFF",
2026-06-21T04:47:53.8087999Z       "title": "Echo-commune fires before INIT_SIGNOFF on orphan teardown (3.3)",
2026-06-21T04:47:53.8088299Z       "requiredStages": [
2026-06-21T04:47:53.8088563Z         "impl",
2026-06-21T04:47:53.8088834Z         "unit"
2026-06-21T04:47:53.8089172Z       ],
2026-06-21T04:47:53.8089440Z       "stages": {
2026-06-21T04:47:53.8089712Z         "doc": {
2026-06-21T04:47:53.8089993Z           "complete": false,
2026-06-21T04:47:53.8090267Z           "evidence": []
2026-06-21T04:47:53.8090528Z         },
2026-06-21T04:47:53.8090918Z         "impl": {
2026-06-21T04:47:53.8091209Z           "complete": true,
2026-06-21T04:47:53.8091481Z           "evidence": [
2026-06-21T04:47:53.8091754Z             {
2026-06-21T04:47:53.8092139Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:53.8092430Z               "line": 466
2026-06-21T04:47:53.8092683Z             },
2026-06-21T04:47:53.8092947Z             {
2026-06-21T04:47:53.8093310Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T04:47:53.8093581Z               "line": 26
2026-06-21T04:47:53.8093848Z             }
2026-06-21T04:47:53.8094105Z           ]
2026-06-21T04:47:53.8094372Z         },
2026-06-21T04:47:53.8094735Z         "int": {
2026-06-21T04:47:53.8095035Z           "complete": false,
2026-06-21T04:47:53.8095331Z           "evidence": []
2026-06-21T04:47:53.8095583Z         },
2026-06-21T04:47:53.8095854Z         "unit": {
2026-06-21T04:47:53.8096138Z           "complete": true,
2026-06-21T04:47:53.8096425Z           "evidence": [
2026-06-21T04:47:53.8096681Z             {
2026-06-21T04:47:53.8097045Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T04:47:53.8097335Z               "line": 150
2026-06-21T04:47:53.8097602Z             },
2026-06-21T04:47:53.8097869Z             {
2026-06-21T04:47:53.8098217Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T04:47:53.8098498Z               "line": 208
2026-06-21T04:47:53.8098770Z             }
2026-06-21T04:47:53.8099109Z           ]
2026-06-21T04:47:53.8099366Z         }
2026-06-21T04:47:53.8099623Z       }
2026-06-21T04:47:53.8099880Z     },
2026-06-21T04:47:53.8100133Z     {
2026-06-21T04:47:53.8100510Z       "id": "REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE",
2026-06-21T04:47:53.8126653Z       "title": "The effect journal serializes EVERY PTY effect under one mutex held ACROSS two fsyncs AND the blocking PTY write — so interactive input stutters and ultimately wedges the daemon hard. ROOT (doyle /diagnose, code-grounded + MEASURED on the operator's real Windows box, 2026-06-19): EffectJournal::apply_once (effect.rs:168-188) takes `inner.lock()` and holds it across `write_line(PENDING)` → `effect()` → `write_line(DONE)`, where write_line (effect.rs:235-239) does flush()+sync_all() (a full FlushFileBuffers) — so each effect pays TWO fsyncs under a GLOBAL lock, and the closure `effect()` (the actual PTY write, broker.rs:1257 EffectKind::PtyWrite via attach.rs:197 send_effect) runs while the lock is held. Two operator-visible facets, ONE root: (A) STUTTER/LAG — every keystroke is a PtyWrite effect = 2× sync_all serialized; measured fsync on %LOCALAPPDATA%\\spt-core = median 6.5ms, spikes to 198ms (C: was recently at 100%), so ~13ms+ per keystroke best case, hundreds under contention → 'many but not all keypresses take 100s of ms, choppy, worsens with volume'. (B) HARD PERMANENT WEDGE — when a PtyWrite `effect()` blocks (ConPTY input buffer full / harness not draining stdin), the journal lock is held INDEFINITELY → the single-threaded inbound-stream dispatch (dispatch.rs serve_attach, which both applies input effects AND opens attaches) can never progress → EVERY subsequent attach (`spt rc --view`/`--take`) fails with 'attach request: brain IPC read deadline elapsed' (confirmed: two retries deadline identically; broker control-plane KIND queries still answer — different thread). This REFUTES the W2-deferred ruling that park-(b)/(c) is 'Windows-benign because ConPTY absorbs 4MiB' — on the real box the input path wedges regardless. DISTINCT from W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST = the OUTPUT drain, correctly fixed @8b5583e; output uses broker.rs:1106 append, NOT the fsync journal). This is the INPUT/effect-journal path W1 never touched, and it is THE wedge the operator hits with --take/--view. FIX DIRECTION (candidates, repro-first — extend inject_control_wedge.rs to a REAL backed-up-PTY-consumer + a real rc-client attach assertion, the gap W1's gate missed): (1) do NOT hold the journal lock across effect() — reserve the key + fsync PENDING under lock, RELEASE, run effect(), re-acquire to fsync DONE + mark applied (preserve crash-idempotency via the per-key reservation, not a global hold); (2) bound/fail-fast the PtyWrite itself (the W2-deferred park bound — write_input must never block indefinitely, DSR-answer must not hold the writer mutex across a blocking write); (3) drop per-keystroke fsync on the interactive path — PtyWrite effects are EPHEMERAL (a keystroke lost on a broker crash is retyped; PTY state is not reconstructed from keystroke replay), so in-memory applied-set dedup suffices (the broker survives the brain — that IS the dedup anchor), with async/batched fsync or no-fsync for EffectKind::PtyWrite while durable kinds (NetSend/NetDial/Registry/Spool) keep their fsync. Combine (1)+(3) at minimum. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-21T04:47:53.8127415Z       "requiredStages": [
2026-06-21T04:47:53.8127690Z         "impl",
2026-06-21T04:47:53.8127952Z         "unit",
2026-06-21T04:47:53.8128220Z         "int"
2026-06-21T04:47:53.8128510Z       ],
2026-06-21T04:47:53.8128778Z       "stages": {
2026-06-21T04:47:53.8129130Z         "doc": {
2026-06-21T04:47:53.8129422Z           "complete": false,
2026-06-21T04:47:53.8129723Z           "evidence": []
2026-06-21T04:47:53.8129970Z         },
2026-06-21T04:47:53.8130240Z         "impl": {
2026-06-21T04:47:53.8130530Z           "complete": true,
2026-06-21T04:47:53.8130807Z           "evidence": [
2026-06-21T04:47:53.8131070Z             {
2026-06-21T04:47:53.8131451Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T04:47:53.8131732Z               "line": 99
2026-06-21T04:47:53.8131986Z             },
2026-06-21T04:47:53.8132253Z             {
2026-06-21T04:47:53.8132637Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T04:47:53.8132917Z               "line": 201
2026-06-21T04:47:53.8133183Z             }
2026-06-21T04:47:53.8133445Z           ]
2026-06-21T04:47:53.8133712Z         },
2026-06-21T04:47:53.8133971Z         "int": {
2026-06-21T04:47:53.8134261Z           "complete": true,
2026-06-21T04:47:53.8134548Z           "evidence": [
2026-06-21T04:47:53.8134815Z             {
2026-06-21T04:47:53.8135281Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T04:47:53.8135560Z               "line": 729
2026-06-21T04:47:53.8135827Z             }
2026-06-21T04:47:53.8136089Z           ]
2026-06-21T04:47:53.8136350Z         },
2026-06-21T04:47:53.8136622Z         "unit": {
2026-06-21T04:47:53.8136914Z           "complete": true,
2026-06-21T04:47:53.8137194Z           "evidence": [
2026-06-21T04:47:53.8137444Z             {
2026-06-21T04:47:53.8137820Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T04:47:53.8138104Z               "line": 517
2026-06-21T04:47:53.8138364Z             },
2026-06-21T04:47:53.8138631Z             {
2026-06-21T04:47:53.8139070Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T04:47:53.8139371Z               "line": 576
2026-06-21T04:47:53.8139629Z             }
2026-06-21T04:47:53.8139910Z           ]
2026-06-21T04:47:53.8140172Z         }
2026-06-21T04:47:53.8140439Z       }
2026-06-21T04:47:53.8140696Z     },
2026-06-21T04:47:53.8140958Z     {
2026-06-21T04:47:53.8141330Z       "id": "REQ-HAZARD-ELEVATED-DAEMON-SPAWN",
2026-06-21T04:47:53.8145113Z       "title": "The daemon always runs unelevated in the invoking user's universe, regardless of which command spawns it: an elevated spawner de-elevates (Windows: UAC linked token via CreateProcessWithTokenW; Linux: drop to SUDO_UID/SUDO_GID + the invoker's HOME) — an elevated daemon's pipes deny unelevated clients (every later spt reads not-running→spawn→bind Access-denied) and a sudo'd daemon roots the user's state universe (5.7)",
2026-06-21T04:47:53.8145442Z       "requiredStages": [
2026-06-21T04:47:53.8145714Z         "doc",
2026-06-21T04:47:53.8145983Z         "impl",
2026-06-21T04:47:53.8146247Z         "unit"
2026-06-21T04:47:53.8146506Z       ],
2026-06-21T04:47:53.8146783Z       "stages": {
2026-06-21T04:47:53.8147183Z         "doc": {
2026-06-21T04:47:53.8147469Z           "complete": true,
2026-06-21T04:47:53.8147741Z           "evidence": [
2026-06-21T04:47:53.8148004Z             {
2026-06-21T04:47:53.8148352Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T04:47:53.8148631Z               "line": 214
2026-06-21T04:47:53.8148901Z             }
2026-06-21T04:47:53.8149235Z           ]
2026-06-21T04:47:53.8149501Z         },
2026-06-21T04:47:53.8149773Z         "impl": {
2026-06-21T04:47:53.8150064Z           "complete": true,
2026-06-21T04:47:53.8150346Z           "evidence": [
2026-06-21T04:47:53.8150603Z             {
2026-06-21T04:47:53.8151013Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.8151432Z               "line": 56
2026-06-21T04:47:53.8151722Z             },
2026-06-21T04:47:53.8152018Z             {
2026-06-21T04:47:53.8152419Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.8152705Z               "line": 580
2026-06-21T04:47:53.8152972Z             },
2026-06-21T04:47:53.8153239Z             {
2026-06-21T04:47:53.8153628Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T04:47:53.8153903Z               "line": 36
2026-06-21T04:47:53.8154165Z             },
2026-06-21T04:47:53.8154428Z             {
2026-06-21T04:47:53.8154814Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T04:47:53.8155095Z               "line": 59
2026-06-21T04:47:53.8155358Z             },
2026-06-21T04:47:53.8155621Z             {
2026-06-21T04:47:53.8156006Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T04:47:53.8156289Z               "line": 83
2026-06-21T04:47:53.8156558Z             },
2026-06-21T04:47:53.8156822Z             {
2026-06-21T04:47:53.8157204Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T04:47:53.8157480Z               "line": 140
2026-06-21T04:47:53.8157747Z             },
2026-06-21T04:47:53.8158005Z             {
2026-06-21T04:47:53.8158382Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T04:47:53.8158672Z               "line": 159
2026-06-21T04:47:53.8159024Z             },
2026-06-21T04:47:53.8159285Z             {
2026-06-21T04:47:53.8159675Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T04:47:53.8159961Z               "line": 384
2026-06-21T04:47:53.8160219Z             },
2026-06-21T04:47:53.8160486Z             {
2026-06-21T04:47:53.8160867Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T04:47:53.8161149Z               "line": 535
2026-06-21T04:47:53.8161403Z             },
2026-06-21T04:47:53.8161665Z             {
2026-06-21T04:47:53.8162049Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T04:47:53.8162331Z               "line": 581
2026-06-21T04:47:53.8162597Z             },
2026-06-21T04:47:53.8162850Z             {
2026-06-21T04:47:53.8163202Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T04:47:53.8163475Z               "line": 300
2026-06-21T04:47:53.8163746Z             },
2026-06-21T04:47:53.8164005Z             {
2026-06-21T04:47:53.8164337Z               "path": "crates/spt/src/main.rs",
2026-06-21T04:47:53.8164606Z               "line": 42
2026-06-21T04:47:53.8164873Z             }
2026-06-21T04:47:53.8165140Z           ]
2026-06-21T04:47:53.8165397Z         },
2026-06-21T04:47:53.8165670Z         "int": {
2026-06-21T04:47:53.8165960Z           "complete": false,
2026-06-21T04:47:53.8166243Z           "evidence": []
2026-06-21T04:47:53.8166505Z         },
2026-06-21T04:47:53.8166772Z         "unit": {
2026-06-21T04:47:53.8167070Z           "complete": true,
2026-06-21T04:47:53.8167349Z           "evidence": [
2026-06-21T04:47:53.8167621Z             {
2026-06-21T04:47:53.8168007Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T04:47:53.8168288Z               "line": 813
2026-06-21T04:47:53.8168556Z             },
2026-06-21T04:47:53.8168814Z             {
2026-06-21T04:47:53.8169276Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T04:47:53.8169723Z               "line": 854
2026-06-21T04:47:53.8169987Z             },
2026-06-21T04:47:53.8170263Z             {
2026-06-21T04:47:53.8170646Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T04:47:53.8170932Z               "line": 928
2026-06-21T04:47:53.8171194Z             }
2026-06-21T04:47:53.8171456Z           ]
2026-06-21T04:47:53.8171714Z         }
2026-06-21T04:47:53.8171972Z       }
2026-06-21T04:47:53.8172239Z     },
2026-06-21T04:47:53.8172489Z     {
2026-06-21T04:47:53.8172876Z       "id": "REQ-HAZARD-ENDPOINT-RUN-ATTACH-OUTPUT",
2026-06-21T04:47:53.8187100Z       "title": "A clean `spt rc` attach to a LIVE spt-hosted (`endpoint run`) harness must DELIVER the harness's PTY output. KEYSTONE — the operator's central 'attach shows no output' symptom, reproduced on the real dummy-harness fixture (v0.12.1 Wave 1) with NO death and NO wedge: bringup succeeds (online, harness pid alive + heartbeating, psyche hosted), the attach CONNECTS (PUMP_IPC_READER spawned, no RC_FAIL, holds the full window) — but receives EXACTLY 0 bytes over 10s of the harness's flushed [session.self] stdout. DISTINCT from REQ-HAZARD-VIEWER-CLOSE-DETACH (death) and REQ-HAZARD-ATTACH-WEDGE (dead-child backpressure): here the harness is ALIVE and the attach is a clean first subscribe. This BLOCKS the 'view is independent' invariant — re-attach is meaningless if a live endpoint-run harness shows nothing. KNOWN-GOOD (rules out 'no drain'): attach.rs `local_attach_via_loopback_conn_rides_the_same_pump` + `broker_spawns_the_pty_child_in_the_requested_cwd` prove the broker DOES drain+fan a `spawn_session` PTY child to a loopback attach over the SAME transport rc uses. Both spawn_session and endpoint-run's spawn_session_pid send KIND_SPAWN → the same dispatch_spawn (broker.rs:706/835) which starts the per-session drain+OutputLog — so the gap is NARROWER than 'no drain', endpoint-run-specific. Root candidates: (a) spawn_session_pid's SpawnReq stdio/env/cwd differs so the dummy's stdout isn't the captured ConPTY; (b) the harness stdout WRITE BLOCKS because the ConPTY buffer fills (drain not reading THIS pty) — explains alive-but-0-bytes; (c) ConPTY reader-park (KH 7.6) on this path; (d) `spt rc` resolve_session/subscribe for an endpoint-run session subscribes to the wrong/empty log. (v0.12.1)",
2026-06-21T04:47:53.8187630Z       "requiredStages": [
2026-06-21T04:47:53.8187892Z         "impl",
2026-06-21T04:47:53.8188157Z         "unit",
2026-06-21T04:47:53.8188422Z         "int"
2026-06-21T04:47:53.8188685Z       ],
2026-06-21T04:47:53.8189043Z       "stages": {
2026-06-21T04:47:53.8189290Z         "doc": {
2026-06-21T04:47:53.8189601Z           "complete": false,
2026-06-21T04:47:53.8189887Z           "evidence": []
2026-06-21T04:47:53.8190149Z         },
2026-06-21T04:47:53.8190415Z         "impl": {
2026-06-21T04:47:53.8190691Z           "complete": true,
2026-06-21T04:47:53.8190974Z           "evidence": [
2026-06-21T04:47:53.8191233Z             {
2026-06-21T04:47:53.8191632Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T04:47:53.8191910Z               "line": 106
2026-06-21T04:47:53.8192176Z             }
2026-06-21T04:47:53.8192430Z           ]
2026-06-21T04:47:53.8192691Z         },
2026-06-21T04:47:53.8192953Z         "int": {
2026-06-21T04:47:53.8193244Z           "complete": true,
2026-06-21T04:47:53.8193520Z           "evidence": [
2026-06-21T04:47:53.8193768Z             {
2026-06-21T04:47:53.8194168Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-21T04:47:53.8194450Z               "line": 296
2026-06-21T04:47:53.8194707Z             }
2026-06-21T04:47:53.8194975Z           ]
2026-06-21T04:47:53.8195236Z         },
2026-06-21T04:47:53.8195503Z         "unit": {
2026-06-21T04:47:53.8195793Z           "complete": true,
2026-06-21T04:47:53.8196068Z           "evidence": [
2026-06-21T04:47:53.8196331Z             {
2026-06-21T04:47:53.8196711Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T04:47:53.8197111Z               "line": 464
2026-06-21T04:47:53.8197379Z             }
2026-06-21T04:47:53.8197641Z           ]
2026-06-21T04:47:53.8197899Z         }
2026-06-21T04:47:53.8198162Z       }
2026-06-21T04:47:53.8198413Z     },
2026-06-21T04:47:53.8198674Z     {
2026-06-21T04:47:53.8199063Z       "id": "REQ-HAZARD-ENV-SUBST",
2026-06-21T04:47:53.8208640Z       "title": "`spt endpoint run` HONORS manifest [env.<VAR>] direction=inject values (with {key} substitution) on the spt-hosted spawn. Today only the [session.self] command ARGV is {id}-substituted; the [env] inject value is NEITHER substituted NOR applied — manifest.schema.json promises EnvVar.value = 'Value to inject (with substitution)' but prepare_harness_spawn fills only argv and SpawnReq carries no env, so a [env.SPT_ENDPOINT_ID].value='{id}' arrives EMPTY. A FLAGLESS harness (bare `claude`, no argv slot for {id}) then routes the id via [env] → empty → SessionStart sees empty $SPT_ENDPOINT_ID → seeds-by-PPID instead of binding → ZERO perch → NO_PERCH (the actual wall-b bind blocker; perri hard-repro'd). SILENT failure (empty inject, no error). FIX (doyle ruled a): fill every [env] inject value from the SAME {key} catalog as argv/role (mirror F-009 TEMPLATE fill, whole-string fill_template for an env value), thread it through SpawnReq.env → the broker sets it on the spawned PTY child. Correctness fix — schema already promises it, NO manifest change, NO new binary. PAIRS with REQ-SEND-SPT-HOSTED to make endpoint run fully work. doyle F-013. (post-v0.10.0)",
2026-06-21T04:47:53.8209207Z       "requiredStages": [
2026-06-21T04:47:53.8209486Z         "impl",
2026-06-21T04:47:53.8209738Z         "unit",
2026-06-21T04:47:53.8210029Z         "int"
2026-06-21T04:47:53.8210281Z       ],
2026-06-21T04:47:53.8210543Z       "stages": {
2026-06-21T04:47:53.8210816Z         "doc": {
2026-06-21T04:47:53.8211102Z           "complete": false,
2026-06-21T04:47:53.8211384Z           "evidence": []
2026-06-21T04:47:53.8211637Z         },
2026-06-21T04:47:53.8211911Z         "impl": {
2026-06-21T04:47:53.8212262Z           "complete": true,
2026-06-21T04:47:53.8212567Z           "evidence": [
2026-06-21T04:47:53.8212857Z             {
2026-06-21T04:47:53.8213287Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T04:47:53.8213607Z               "line": 123
2026-06-21T04:47:53.8213893Z             },
2026-06-21T04:47:53.8214189Z             {
2026-06-21T04:47:53.8214566Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T04:47:53.8214874Z               "line": 134
2026-06-21T04:47:53.8215165Z             }
2026-06-21T04:47:53.8215432Z           ]
2026-06-21T04:47:53.8215693Z         },
2026-06-21T04:47:53.8215960Z         "int": {
2026-06-21T04:47:53.8216247Z           "complete": true,
2026-06-21T04:47:53.8216528Z           "evidence": [
2026-06-21T04:47:53.8216796Z             {
2026-06-21T04:47:53.8217183Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T04:47:53.8217460Z               "line": 312
2026-06-21T04:47:53.8217727Z             },
2026-06-21T04:47:53.8217989Z             {
2026-06-21T04:47:53.8218362Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T04:47:53.8218652Z               "line": 508
2026-06-21T04:47:53.8218913Z             }
2026-06-21T04:47:53.8219253Z           ]
2026-06-21T04:47:53.8219510Z         },
2026-06-21T04:47:53.8219790Z         "unit": {
2026-06-21T04:47:53.8220079Z           "complete": true,
2026-06-21T04:47:53.8220361Z           "evidence": [
2026-06-21T04:47:53.8220623Z             {
2026-06-21T04:47:53.8221018Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T04:47:53.8221304Z               "line": 250
2026-06-21T04:47:53.8221567Z             }
2026-06-21T04:47:53.8221829Z           ]
2026-06-21T04:47:53.8222086Z         }
2026-06-21T04:47:53.8222357Z       }
2026-06-21T04:47:53.8222613Z     },
2026-06-21T04:47:53.8222870Z     {
2026-06-21T04:47:53.8223232Z       "id": "REQ-HAZARD-ENVELOPE-CR-LINESAFE",
2026-06-21T04:47:53.8228158Z       "title": "Envelope CR-linesafety (4.1): the line-framed EVENT codec must neutralize raw carriage returns — `event_body_escape` folds CRLF/lone-CR to the codec's representable linebreak (`\\n`→`<br>`) BEFORE framing, so a body carrying `\\r` (Windows `echo`/CRLF text crossing nodes) cannot survive into the single-line envelope and trigger a receiver terminal CR→col0 overwrite that corrupts the frame. Robustness on unrepresentable input, NOT a wire-format change (decoder untouched, amp-last invariant held). Belt-and-suspenders: `spt send`/`ring` also trim stdin (parity with `notify`).",
2026-06-21T04:47:53.8228602Z       "requiredStages": [
2026-06-21T04:47:53.8228869Z         "impl",
2026-06-21T04:47:53.8229311Z         "unit"
2026-06-21T04:47:53.8229585Z       ],
2026-06-21T04:47:53.8229842Z       "stages": {
2026-06-21T04:47:53.8230108Z         "doc": {
2026-06-21T04:47:53.8230407Z           "complete": false,
2026-06-21T04:47:53.8230682Z           "evidence": []
2026-06-21T04:47:53.8230940Z         },
2026-06-21T04:47:53.8231226Z         "impl": {
2026-06-21T04:47:53.8231502Z           "complete": true,
2026-06-21T04:47:53.8231779Z           "evidence": [
2026-06-21T04:47:53.8232045Z             {
2026-06-21T04:47:53.8232428Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T04:47:53.8232704Z               "line": 31
2026-06-21T04:47:53.8232964Z             }
2026-06-21T04:47:53.8233230Z           ]
2026-06-21T04:47:53.8233493Z         },
2026-06-21T04:47:53.8233755Z         "int": {
2026-06-21T04:47:53.8234060Z           "complete": false,
2026-06-21T04:47:53.8234342Z           "evidence": []
2026-06-21T04:47:53.8234603Z         },
2026-06-21T04:47:53.8234874Z         "unit": {
2026-06-21T04:47:53.8235161Z           "complete": true,
2026-06-21T04:47:53.8235446Z           "evidence": [
2026-06-21T04:47:53.8235700Z             {
2026-06-21T04:47:53.8236094Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T04:47:53.8236376Z               "line": 181
2026-06-21T04:47:53.8236634Z             }
2026-06-21T04:47:53.8236896Z           ]
2026-06-21T04:47:53.8237157Z         }
2026-06-21T04:47:53.8237433Z       }
2026-06-21T04:47:53.8237691Z     },
2026-06-21T04:47:53.8237950Z     {
2026-06-21T04:47:53.8238309Z       "id": "REQ-HAZARD-ENVELOPE-DECODE-ORDER",
2026-06-21T04:47:53.8238789Z       "title": "Envelope decode order, ampersand decoded last (4.1)",
2026-06-21T04:47:53.8239162Z       "requiredStages": [
2026-06-21T04:47:53.8239419Z         "impl",
2026-06-21T04:47:53.8239690Z         "unit"
2026-06-21T04:47:53.8239953Z       ],
2026-06-21T04:47:53.8240220Z       "stages": {
2026-06-21T04:47:53.8240488Z         "doc": {
2026-06-21T04:47:53.8240784Z           "complete": false,
2026-06-21T04:47:53.8241072Z           "evidence": []
2026-06-21T04:47:53.8241327Z         },
2026-06-21T04:47:53.8241599Z         "impl": {
2026-06-21T04:47:53.8241880Z           "complete": true,
2026-06-21T04:47:53.8242158Z           "evidence": [
2026-06-21T04:47:53.8242424Z             {
2026-06-21T04:47:53.8242810Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T04:47:53.8243096Z               "line": 49
2026-06-21T04:47:53.8243355Z             },
2026-06-21T04:47:53.8243620Z             {
2026-06-21T04:47:53.8244000Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T04:47:53.8244348Z               "line": 81
2026-06-21T04:47:53.8244615Z             }
2026-06-21T04:47:53.8244877Z           ]
2026-06-21T04:47:53.8245138Z         },
2026-06-21T04:47:53.8245401Z         "int": {
2026-06-21T04:47:53.8245696Z           "complete": false,
2026-06-21T04:47:53.8245968Z           "evidence": []
2026-06-21T04:47:53.8246227Z         },
2026-06-21T04:47:53.8246512Z         "unit": {
2026-06-21T04:47:53.8246802Z           "complete": true,
2026-06-21T04:47:53.8247078Z           "evidence": [
2026-06-21T04:47:53.8247336Z             {
2026-06-21T04:47:53.8247717Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T04:47:53.8247998Z               "line": 156
2026-06-21T04:47:53.8248381Z             },
2026-06-21T04:47:53.8248642Z             {
2026-06-21T04:47:53.8249092Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T04:47:53.8249383Z               "line": 173
2026-06-21T04:47:53.8249645Z             },
2026-06-21T04:47:53.8249907Z             {
2026-06-21T04:47:53.8250284Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T04:47:53.8250565Z               "line": 196
2026-06-21T04:47:53.8250828Z             }
2026-06-21T04:47:53.8251090Z           ]
2026-06-21T04:47:53.8251359Z         }
2026-06-21T04:47:53.8251614Z       }
2026-06-21T04:47:53.8251873Z     },
2026-06-21T04:47:53.8252130Z     {
2026-06-21T04:47:53.8252599Z       "id": "REQ-HAZARD-ENVELOPE-PARSER-SAFE",
2026-06-21T04:47:53.8253147Z       "title": "Two-slice envelope parser is panic-free and tolerant (4.2)",
2026-06-21T04:47:53.8253432Z       "requiredStages": [
2026-06-21T04:47:53.8253709Z         "impl",
2026-06-21T04:47:53.8253976Z         "unit"
2026-06-21T04:47:53.8254247Z       ],
2026-06-21T04:47:53.8254517Z       "stages": {
2026-06-21T04:47:53.8254779Z         "doc": {
2026-06-21T04:47:53.8255079Z           "complete": false,
2026-06-21T04:47:53.8255360Z           "evidence": []
2026-06-21T04:47:53.8255628Z         },
2026-06-21T04:47:53.8255894Z         "impl": {
2026-06-21T04:47:53.8256190Z           "complete": true,
2026-06-21T04:47:53.8256472Z           "evidence": [
2026-06-21T04:47:53.8256735Z             {
2026-06-21T04:47:53.8257120Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T04:47:53.8257401Z               "line": 120
2026-06-21T04:47:53.8257658Z             }
2026-06-21T04:47:53.8257924Z           ]
2026-06-21T04:47:53.8258192Z         },
2026-06-21T04:47:53.8258445Z         "int": {
2026-06-21T04:47:53.8258746Z           "complete": false,
2026-06-21T04:47:53.8259107Z           "evidence": []
2026-06-21T04:47:53.8259368Z         },
2026-06-21T04:47:53.8259638Z         "unit": {
2026-06-21T04:47:53.8259919Z           "complete": true,
2026-06-21T04:47:53.8260200Z           "evidence": [
2026-06-21T04:47:53.8260463Z             {
2026-06-21T04:47:53.8260835Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T04:47:53.8261116Z               "line": 212
2026-06-21T04:47:53.8261378Z             },
2026-06-21T04:47:53.8261636Z             {
2026-06-21T04:47:53.8262007Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T04:47:53.8262287Z               "line": 221
2026-06-21T04:47:53.8262539Z             },
2026-06-21T04:47:53.8262811Z             {
2026-06-21T04:47:53.8263178Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T04:47:53.8263445Z               "line": 229
2026-06-21T04:47:53.8263721Z             },
2026-06-21T04:47:53.8263974Z             {
2026-06-21T04:47:53.8264351Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T04:47:53.8264626Z               "line": 239
2026-06-21T04:47:53.8264891Z             },
2026-06-21T04:47:53.8265154Z             {
2026-06-21T04:47:53.8266074Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T04:47:53.8266384Z               "line": 249
2026-06-21T04:47:53.8266646Z             }
2026-06-21T04:47:53.8266912Z           ]
2026-06-21T04:47:53.8267165Z         }
2026-06-21T04:47:53.8267422Z       }
2026-06-21T04:47:53.8267689Z     },
2026-06-21T04:47:53.8267961Z     {
2026-06-21T04:47:53.8268300Z       "id": "REQ-HAZARD-EPHEMERAL-CLEANUP",
2026-06-21T04:47:53.8268790Z       "title": "Ephemeral perch cleanup on every ring exit path (3.1)",
2026-06-21T04:47:53.8269143Z       "requiredStages": [
2026-06-21T04:47:53.8269415Z         "impl",
2026-06-21T04:47:53.8269686Z         "unit"
2026-06-21T04:47:53.8269956Z       ],
2026-06-21T04:47:53.8270227Z       "stages": {
2026-06-21T04:47:53.8270489Z         "doc": {
2026-06-21T04:47:53.8270785Z           "complete": false,
2026-06-21T04:47:53.8271065Z           "evidence": []
2026-06-21T04:47:53.8271324Z         },
2026-06-21T04:47:53.8271595Z         "impl": {
2026-06-21T04:47:53.8272014Z           "complete": true,
2026-06-21T04:47:53.8272287Z           "evidence": [
2026-06-21T04:47:53.8272553Z             {
2026-06-21T04:47:53.8272889Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T04:47:53.8273171Z               "line": 14
2026-06-21T04:47:53.8273438Z             },
2026-06-21T04:47:53.8273705Z             {
2026-06-21T04:47:53.8274058Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T04:47:53.8274330Z               "line": 63
2026-06-21T04:47:53.8274596Z             }
2026-06-21T04:47:53.8274858Z           ]
2026-06-21T04:47:53.8275115Z         },
2026-06-21T04:47:53.8275377Z         "int": {
2026-06-21T04:47:53.8275789Z           "complete": false,
2026-06-21T04:47:53.8276076Z           "evidence": []
2026-06-21T04:47:53.8276333Z         },
2026-06-21T04:47:53.8276591Z         "unit": {
2026-06-21T04:47:53.8276882Z           "complete": true,
2026-06-21T04:47:53.8277163Z           "evidence": [
2026-06-21T04:47:53.8277439Z             {
2026-06-21T04:47:53.8277788Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T04:47:53.8278073Z               "line": 164
2026-06-21T04:47:53.8278334Z             },
2026-06-21T04:47:53.8278602Z             {
2026-06-21T04:47:53.8279021Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T04:47:53.8279312Z               "line": 198
2026-06-21T04:47:53.8279574Z             },
2026-06-21T04:47:53.8279842Z             {
2026-06-21T04:47:53.8280185Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T04:47:53.8280465Z               "line": 220
2026-06-21T04:47:53.8280734Z             }
2026-06-21T04:47:53.8280986Z           ]
2026-06-21T04:47:53.8281264Z         }
2026-06-21T04:47:53.8281517Z       }
2026-06-21T04:47:53.8281774Z     },
2026-06-21T04:47:53.8282037Z     {
2026-06-21T04:47:53.8282357Z       "id": "REQ-HAZARD-EPOCH-RESET",
2026-06-21T04:47:53.8286188Z       "title": "Advertisement-epoch reset strands a node: peers' higher last-seen epoch drops the reset node's fresh advertisements as Stale until the counter outruns history. Common case (full reinstall/re-pair) is mitigated by REQ-SUBNET-7's ceremony eviction (peer-side epoch memory dies with the deleted row — acceptance-verified); the residual narrow slice (epoch file lost, identity kept) is documented, guard deferred to a field hit (4.11)",
2026-06-21T04:47:53.8286507Z       "requiredStages": [],
2026-06-21T04:47:53.8286778Z       "stages": {
2026-06-21T04:47:53.8287040Z         "doc": {
2026-06-21T04:47:53.8287327Z           "complete": true,
2026-06-21T04:47:53.8287609Z           "evidence": [
2026-06-21T04:47:53.8287871Z             {
2026-06-21T04:47:53.8288205Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T04:47:53.8288501Z               "line": 165
2026-06-21T04:47:53.8288766Z             }
2026-06-21T04:47:53.8289110Z           ]
2026-06-21T04:47:53.8289363Z         },
2026-06-21T04:47:53.8289653Z         "impl": {
2026-06-21T04:47:53.8289944Z           "complete": false,
2026-06-21T04:47:53.8290254Z           "evidence": []
2026-06-21T04:47:53.8290506Z         },
2026-06-21T04:47:53.8290768Z         "int": {
2026-06-21T04:47:53.8291063Z           "complete": false,
2026-06-21T04:47:53.8291338Z           "evidence": []
2026-06-21T04:47:53.8291609Z         },
2026-06-21T04:47:53.8291875Z         "unit": {
2026-06-21T04:47:53.8292167Z           "complete": false,
2026-06-21T04:47:53.8292448Z           "evidence": []
2026-06-21T04:47:53.8292706Z         }
2026-06-21T04:47:53.8292969Z       }
2026-06-21T04:47:53.8293222Z     },
2026-06-21T04:47:53.8293484Z     {
2026-06-21T04:47:53.8293839Z       "id": "REQ-HAZARD-EVENTPART-REASSEMBLY",
2026-06-21T04:47:53.8294496Z       "title": "EVENT-PART split/reassembly is byte-exact; orphan parts dropped silently",
2026-06-21T04:47:53.8294796Z       "requiredStages": [
2026-06-21T04:47:53.8295062Z         "impl",
2026-06-21T04:47:53.8295335Z         "unit"
2026-06-21T04:47:53.8295597Z       ],
2026-06-21T04:47:53.8295869Z       "stages": {
2026-06-21T04:47:53.8296250Z         "doc": {
2026-06-21T04:47:53.8296543Z           "complete": false,
2026-06-21T04:47:53.8296829Z           "evidence": []
2026-06-21T04:47:53.8300967Z         },
2026-06-21T04:47:53.8301273Z         "impl": {
2026-06-21T04:47:53.8301566Z           "complete": true,
2026-06-21T04:47:53.8301855Z           "evidence": [
2026-06-21T04:47:53.8302116Z             {
2026-06-21T04:47:53.8302489Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T04:47:53.8302775Z               "line": 76
2026-06-21T04:47:53.8303042Z             },
2026-06-21T04:47:53.8303309Z             {
2026-06-21T04:47:53.8303662Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T04:47:53.8304121Z               "line": 167
2026-06-21T04:47:53.8304381Z             },
2026-06-21T04:47:53.8304645Z             {
2026-06-21T04:47:53.8305008Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T04:47:53.8305275Z               "line": 233
2026-06-21T04:47:53.8305547Z             },
2026-06-21T04:47:53.8305823Z             {
2026-06-21T04:47:53.8306185Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T04:47:53.8306467Z               "line": 272
2026-06-21T04:47:53.8306735Z             }
2026-06-21T04:47:53.8306996Z           ]
2026-06-21T04:47:53.8307245Z         },
2026-06-21T04:47:53.8307508Z         "int": {
2026-06-21T04:47:53.8307799Z           "complete": false,
2026-06-21T04:47:53.8308080Z           "evidence": []
2026-06-21T04:47:53.8308343Z         },
2026-06-21T04:47:53.8308615Z         "unit": {
2026-06-21T04:47:53.8308911Z           "complete": true,
2026-06-21T04:47:53.8309273Z           "evidence": [
2026-06-21T04:47:53.8309546Z             {
2026-06-21T04:47:53.8309911Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T04:47:53.8310187Z               "line": 321
2026-06-21T04:47:53.8310444Z             },
2026-06-21T04:47:53.8310715Z             {
2026-06-21T04:47:53.8311064Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T04:47:53.8311350Z               "line": 329
2026-06-21T04:47:53.8311621Z             },
2026-06-21T04:47:53.8311880Z             {
2026-06-21T04:47:53.8312244Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T04:47:53.8312516Z               "line": 356
2026-06-21T04:47:53.8312788Z             },
2026-06-21T04:47:53.8313045Z             {
2026-06-21T04:47:53.8313408Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T04:47:53.8313679Z               "line": 395
2026-06-21T04:47:53.8313931Z             },
2026-06-21T04:47:53.8314194Z             {
2026-06-21T04:47:53.8314546Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T04:47:53.8314831Z               "line": 406
2026-06-21T04:47:53.8315106Z             },
2026-06-21T04:47:53.8315359Z             {
2026-06-21T04:47:53.8315721Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T04:47:53.8316003Z               "line": 418
2026-06-21T04:47:53.8316270Z             },
2026-06-21T04:47:53.8316531Z             {
2026-06-21T04:47:53.8316900Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T04:47:53.8317181Z               "line": 442
2026-06-21T04:47:53.8317441Z             }
2026-06-21T04:47:53.8317711Z           ]
2026-06-21T04:47:53.8317969Z         }
2026-06-21T04:47:53.8318231Z       }
2026-06-21T04:47:53.8318478Z     },
2026-06-21T04:47:53.8318731Z     {
2026-06-21T04:47:53.8319132Z       "id": "REQ-HAZARD-GEN-START-NOW",
2026-06-21T04:47:53.8319580Z       "title": "gen_start = now() on cold-start and handoff (2.4)",
2026-06-21T04:47:53.8319871Z       "requiredStages": [
2026-06-21T04:47:53.8320134Z         "impl",
2026-06-21T04:47:53.8320403Z         "int"
2026-06-21T04:47:53.8320680Z       ],
2026-06-21T04:47:53.8320956Z       "stages": {
2026-06-21T04:47:53.8321224Z         "doc": {
2026-06-21T04:47:53.8321514Z           "complete": false,
2026-06-21T04:47:53.8321810Z           "evidence": []
2026-06-21T04:47:53.8322069Z         },
2026-06-21T04:47:53.8322346Z         "impl": {
2026-06-21T04:47:53.8322739Z           "complete": true,
2026-06-21T04:47:53.8323028Z           "evidence": [
2026-06-21T04:47:53.8323295Z             {
2026-06-21T04:47:53.8323648Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T04:47:53.8323930Z               "line": 22
2026-06-21T04:47:53.8324196Z             }
2026-06-21T04:47:53.8324462Z           ]
2026-06-21T04:47:53.8324715Z         },
2026-06-21T04:47:53.8324988Z         "int": {
2026-06-21T04:47:53.8325280Z           "complete": true,
2026-06-21T04:47:53.8325549Z           "evidence": [
2026-06-21T04:47:53.8325818Z             {
2026-06-21T04:47:53.8326201Z               "path": "crates/spt-daemon/tests/handoff.rs",
2026-06-21T04:47:53.8326600Z               "line": 18
2026-06-21T04:47:53.8326864Z             }
2026-06-21T04:47:53.8327126Z           ]
2026-06-21T04:47:53.8327392Z         },
2026-06-21T04:47:53.8327654Z         "unit": {
2026-06-21T04:47:53.8327949Z           "complete": false,
2026-06-21T04:47:53.8328228Z           "evidence": []
2026-06-21T04:47:53.8328500Z         }
2026-06-21T04:47:53.8328758Z       }
2026-06-21T04:47:53.8329101Z     },
2026-06-21T04:47:53.8329368Z     {
2026-06-21T04:47:53.8329754Z       "id": "REQ-HAZARD-GRACE-BEFORE-SIGNOFF",
2026-06-21T04:47:53.8330351Z       "title": "Grace-period wait completes before composing INIT_SIGNOFF (1.1)",
2026-06-21T04:47:53.8330656Z       "requiredStages": [
2026-06-21T04:47:53.8330930Z         "impl",
2026-06-21T04:47:53.8331188Z         "unit"
2026-06-21T04:47:53.8331446Z       ],
2026-06-21T04:47:53.8331718Z       "stages": {
2026-06-21T04:47:53.8331975Z         "doc": {
2026-06-21T04:47:53.8332257Z           "complete": false,
2026-06-21T04:47:53.8332543Z           "evidence": []
2026-06-21T04:47:53.8332809Z         },
2026-06-21T04:47:53.8333071Z         "impl": {
2026-06-21T04:47:53.8333350Z           "complete": true,
2026-06-21T04:47:53.8333636Z           "evidence": [
2026-06-21T04:47:53.8333888Z             {
2026-06-21T04:47:53.8334280Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:53.8334566Z               "line": 465
2026-06-21T04:47:53.8334833Z             },
2026-06-21T04:47:53.8335099Z             {
2026-06-21T04:47:53.8335458Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T04:47:53.8335739Z               "line": 27
2026-06-21T04:47:53.8335995Z             }
2026-06-21T04:47:53.8336255Z           ]
2026-06-21T04:47:53.8336517Z         },
2026-06-21T04:47:53.8336785Z         "int": {
2026-06-21T04:47:53.8337080Z           "complete": false,
2026-06-21T04:47:53.8337366Z           "evidence": []
2026-06-21T04:47:53.8337628Z         },
2026-06-21T04:47:53.8337890Z         "unit": {
2026-06-21T04:47:53.8338185Z           "complete": true,
2026-06-21T04:47:53.8338457Z           "evidence": [
2026-06-21T04:47:53.8338724Z             {
2026-06-21T04:47:53.8339193Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:53.8339483Z               "line": 990
2026-06-21T04:47:53.8339752Z             },
2026-06-21T04:47:53.8340018Z             {
2026-06-21T04:47:53.8340375Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T04:47:53.8340648Z               "line": 181
2026-06-21T04:47:53.8340916Z             }
2026-06-21T04:47:53.8341178Z           ]
2026-06-21T04:47:53.8341429Z         }
2026-06-21T04:47:53.8341695Z       }
2026-06-21T04:47:53.8341953Z     },
2026-06-21T04:47:53.8342216Z     {
2026-06-21T04:47:53.8342559Z       "id": "REQ-HAZARD-HANDOFF-ARGV-COMPAT",
2026-06-21T04:47:53.8343055Z       "title": "Broker/brain IPC + handoff argv version-tolerant (2.3)",
2026-06-21T04:47:53.8343340Z       "requiredStages": [
2026-06-21T04:47:53.8343607Z         "impl",
2026-06-21T04:47:53.8343882Z         "unit"
2026-06-21T04:47:53.8344143Z       ],
2026-06-21T04:47:53.8344478Z       "stages": {
2026-06-21T04:47:53.8344750Z         "doc": {
2026-06-21T04:47:53.8345035Z           "complete": false,
2026-06-21T04:47:53.8345321Z           "evidence": []
2026-06-21T04:47:53.8345578Z         },
2026-06-21T04:47:53.8345960Z         "impl": {
2026-06-21T04:47:53.8346241Z           "complete": true,
2026-06-21T04:47:53.8346526Z           "evidence": [
2026-06-21T04:47:53.8346791Z             {
2026-06-21T04:47:53.8347172Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.8347454Z               "line": 73
2026-06-21T04:47:53.8347721Z             },
2026-06-21T04:47:53.8347979Z             {
2026-06-21T04:47:53.8348351Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.8348632Z               "line": 972
2026-06-21T04:47:53.8348895Z             },
2026-06-21T04:47:53.8349240Z             {
2026-06-21T04:47:53.8349597Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T04:47:53.8349988Z               "line": 20
2026-06-21T04:47:53.8350264Z             },
2026-06-21T04:47:53.8350512Z             {
2026-06-21T04:47:53.8350875Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T04:47:53.8351151Z               "line": 100
2026-06-21T04:47:53.8351418Z             },
2026-06-21T04:47:53.8351675Z             {
2026-06-21T04:47:53.8352026Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T04:47:53.8352308Z               "line": 603
2026-06-21T04:47:53.8352561Z             },
2026-06-21T04:47:53.8352828Z             {
2026-06-21T04:47:53.8353200Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T04:47:53.8353486Z               "line": 68
2026-06-21T04:47:53.8353754Z             },
2026-06-21T04:47:53.8354002Z             {
2026-06-21T04:47:53.8354382Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T04:47:53.8354651Z               "line": 80
2026-06-21T04:47:53.8354922Z             }
2026-06-21T04:47:53.8355185Z           ]
2026-06-21T04:47:53.8355438Z         },
2026-06-21T04:47:53.8355705Z         "int": {
2026-06-21T04:47:53.8355991Z           "complete": true,
2026-06-21T04:47:53.8356273Z           "evidence": [
2026-06-21T04:47:53.8356525Z             {
2026-06-21T04:47:53.8356878Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-21T04:47:53.8357162Z               "line": 44
2026-06-21T04:47:53.8357427Z             }
2026-06-21T04:47:53.8357694Z           ]
2026-06-21T04:47:53.8357957Z         },
2026-06-21T04:47:53.8358224Z         "unit": {
2026-06-21T04:47:53.8358511Z           "complete": true,
2026-06-21T04:47:53.8358782Z           "evidence": [
2026-06-21T04:47:53.8359141Z             {
2026-06-21T04:47:53.8359531Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.8359815Z               "line": 1181
2026-06-21T04:47:53.8360075Z             },
2026-06-21T04:47:53.8360342Z             {
2026-06-21T04:47:53.8360739Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:53.8361019Z               "line": 1197
2026-06-21T04:47:53.8361281Z             },
2026-06-21T04:47:53.8361544Z             {
2026-06-21T04:47:53.8361915Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.8362187Z               "line": 2246
2026-06-21T04:47:53.8362459Z             },
2026-06-21T04:47:53.8362721Z             {
2026-06-21T04:47:53.8363083Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T04:47:53.8363365Z               "line": 152
2026-06-21T04:47:53.8363622Z             },
2026-06-21T04:47:53.8363893Z             {
2026-06-21T04:47:53.8364252Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T04:47:53.8364537Z               "line": 175
2026-06-21T04:47:53.8364798Z             },
2026-06-21T04:47:53.8365053Z             {
2026-06-21T04:47:53.8365411Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T04:47:53.8365697Z               "line": 186
2026-06-21T04:47:53.8365969Z             },
2026-06-21T04:47:53.8366227Z             {
2026-06-21T04:47:53.8366598Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T04:47:53.8366880Z               "line": 202
2026-06-21T04:47:53.8367138Z             },
2026-06-21T04:47:53.8367400Z             {
2026-06-21T04:47:53.8367855Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T04:47:53.8368145Z               "line": 216
2026-06-21T04:47:53.8368412Z             },
2026-06-21T04:47:53.8368673Z             {
2026-06-21T04:47:53.8369203Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T04:47:53.8369494Z               "line": 137
2026-06-21T04:47:53.8369752Z             },
2026-06-21T04:47:53.8370010Z             {
2026-06-21T04:47:53.8370332Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.8370606Z               "line": 8152
2026-06-21T04:47:53.8370873Z             },
2026-06-21T04:47:53.8371136Z             {
2026-06-21T04:47:53.8371599Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-21T04:47:53.8371870Z               "line": 30
2026-06-21T04:47:53.8372137Z             },
2026-06-21T04:47:53.8372404Z             {
2026-06-21T04:47:53.8372757Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-21T04:47:53.8373033Z               "line": 73
2026-06-21T04:47:53.8373300Z             }
2026-06-21T04:47:53.8373567Z           ]
2026-06-21T04:47:53.8373819Z         }
2026-06-21T04:47:53.8374086Z       }
2026-06-21T04:47:53.8374359Z     },
2026-06-21T04:47:53.8374611Z     {
2026-06-21T04:47:53.8375016Z       "id": "REQ-HAZARD-HOSTED-LIVENESS-RECONCILE",
2026-06-21T04:47:53.8386622Z       "title": "B2 KEYSTONE: a daemon-hosted (spt-hosted) endpoint's info.json status is RECONCILED to real liveness, not left latched online. The broker exit-waiter (broker.rs:889-910) reaps its in-mem session table + emits ExitEvent but NEVER touches info.json; lifecycle::mark_offline only fires on Psyche teardown — so a dead/exited harness (operator closed the tab) stays status=online forever (is_perch_alive returns ONLINE for daemon-hosted, liveness.rs:80-93). FIX (doyle ruled PULL-PRIMARY — the live-status analog of REQ-HAZARD-ROSTER-GHOST): the livehost reconcile loop (reconcile_once livehost.rs:226-313) queries the broker's live session set (KIND_SESSIONS) each tick and, for any status=online live_agent perch PAST the boot grace whose endpoint has NO live broker session, marks it offline (lifecycle::mark_offline → status=offline → is_perch_alive=false). GATED on spt-hosted (controllable==Some(true)) so a HARNESS-HOSTED relay live agent (api listen, legitimately online with no broker session) is NEVER mis-marked. Crash-robust + self-healing on the next tick (clear-on-event is not crash-robust alone). PUSH (brain ExitEvent→mark_offline) is an OPTIONAL fast-path only if the daemon brain is reliably subscribed to all hosted sessions; correctness rides the pull. Broker stays stateless (ADR-0004 §B — brain owns the info.json write). (v0.12.0)",
2026-06-21T04:47:53.8387009Z       "requiredStages": [
2026-06-21T04:47:53.8387276Z         "impl",
2026-06-21T04:47:53.8387542Z         "unit",
2026-06-21T04:47:53.8387795Z         "int"
2026-06-21T04:47:53.8388048Z       ],
2026-06-21T04:47:53.8388326Z       "stages": {
2026-06-21T04:47:53.8388583Z         "doc": {
2026-06-21T04:47:53.8388895Z           "complete": false,
2026-06-21T04:47:53.8389261Z           "evidence": []
2026-06-21T04:47:53.8389528Z         },
2026-06-21T04:47:53.8389808Z         "impl": {
2026-06-21T04:47:53.8390099Z           "complete": true,
2026-06-21T04:47:53.8390381Z           "evidence": [
2026-06-21T04:47:53.8390643Z             {
2026-06-21T04:47:53.8391015Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.8391310Z               "line": 510
2026-06-21T04:47:53.8391580Z             },
2026-06-21T04:47:53.8391847Z             {
2026-06-21T04:47:53.8392228Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.8392561Z               "line": 704
2026-06-21T04:47:53.8392829Z             }
2026-06-21T04:47:53.8393092Z           ]
2026-06-21T04:47:53.8393354Z         },
2026-06-21T04:47:53.8393615Z         "int": {
2026-06-21T04:47:53.8393916Z           "complete": true,
2026-06-21T04:47:53.8394238Z           "evidence": [
2026-06-21T04:47:53.8394539Z             {
2026-06-21T04:47:53.8395050Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.8395331Z               "line": 1119
2026-06-21T04:47:53.8395593Z             },
2026-06-21T04:47:53.8395859Z             {
2026-06-21T04:47:53.8396257Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-21T04:47:53.8396540Z               "line": 312
2026-06-21T04:47:53.8396810Z             }
2026-06-21T04:47:53.8397077Z           ]
2026-06-21T04:47:53.8397345Z         },
2026-06-21T04:47:53.8397612Z         "unit": {
2026-06-21T04:47:53.8397903Z           "complete": true,
2026-06-21T04:47:53.8398180Z           "evidence": [
2026-06-21T04:47:53.8398542Z             {
2026-06-21T04:47:53.8398923Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.8399285Z               "line": 821
2026-06-21T04:47:53.8399550Z             }
2026-06-21T04:47:53.8399811Z           ]
2026-06-21T04:47:53.8400078Z         }
2026-06-21T04:47:53.8400340Z       }
2026-06-21T04:47:53.8400626Z     },
2026-06-21T04:47:53.8400917Z     {
2026-06-21T04:47:53.8401255Z       "id": "REQ-HAZARD-ID-CHARSET",
2026-06-21T04:47:53.8402061Z       "title": "Addressable-id charset reserves :/@ delimiters; validated at every creation seam (4.6)",
2026-06-21T04:47:53.8402412Z       "requiredStages": [
2026-06-21T04:47:53.8402712Z         "impl",
2026-06-21T04:47:53.8403008Z         "unit"
2026-06-21T04:47:53.8403294Z       ],
2026-06-21T04:47:53.8403574Z       "stages": {
2026-06-21T04:47:53.8403846Z         "doc": {
2026-06-21T04:47:53.8404132Z           "complete": true,
2026-06-21T04:47:53.8404408Z           "evidence": [
2026-06-21T04:47:53.8404676Z             {
2026-06-21T04:47:53.8405024Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T04:47:53.8405300Z               "line": 133
2026-06-21T04:47:53.8405568Z             }
2026-06-21T04:47:53.8405829Z           ]
2026-06-21T04:47:53.8406091Z         },
2026-06-21T04:47:53.8406363Z         "impl": {
2026-06-21T04:47:53.8406654Z           "complete": true,
2026-06-21T04:47:53.8406954Z           "evidence": [
2026-06-21T04:47:53.8407215Z             {
2026-06-21T04:47:53.8407572Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T04:47:53.8407843Z               "line": 65
2026-06-21T04:47:53.8408115Z             },
2026-06-21T04:47:53.8408381Z             {
2026-06-21T04:47:53.8408735Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T04:47:53.8409093Z               "line": 17
2026-06-21T04:47:53.8409350Z             },
2026-06-21T04:47:53.8409646Z             {
2026-06-21T04:47:53.8410026Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T04:47:53.8410304Z               "line": 146
2026-06-21T04:47:53.8410585Z             },
2026-06-21T04:47:53.8410848Z             {
2026-06-21T04:47:53.8411210Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:53.8411487Z               "line": 310
2026-06-21T04:47:53.8411758Z             },
2026-06-21T04:47:53.8412022Z             {
2026-06-21T04:47:53.8412388Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:53.8412682Z               "line": 441
2026-06-21T04:47:53.8412943Z             },
2026-06-21T04:47:53.8413205Z             {
2026-06-21T04:47:53.8413559Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T04:47:53.8413835Z               "line": 32
2026-06-21T04:47:53.8414092Z             },
2026-06-21T04:47:53.8414359Z             {
2026-06-21T04:47:53.8414683Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.8414968Z               "line": 1283
2026-06-21T04:47:53.8415241Z             },
2026-06-21T04:47:53.8415498Z             {
2026-06-21T04:47:53.8415836Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.8416123Z               "line": 6161
2026-06-21T04:47:53.8416389Z             },
2026-06-21T04:47:53.8416656Z             {
2026-06-21T04:47:53.8416980Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.8417281Z               "line": 6443
2026-06-21T04:47:53.8417637Z             }
2026-06-21T04:47:53.8417902Z           ]
2026-06-21T04:47:53.8418164Z         },
2026-06-21T04:47:53.8418432Z         "int": {
2026-06-21T04:47:53.8418737Z           "complete": false,
2026-06-21T04:47:53.8419085Z           "evidence": []
2026-06-21T04:47:53.8419347Z         },
2026-06-21T04:47:53.8419615Z         "unit": {
2026-06-21T04:47:53.8419905Z           "complete": true,
2026-06-21T04:47:53.8420181Z           "evidence": [
2026-06-21T04:47:53.8420447Z             {
2026-06-21T04:47:53.8420792Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T04:47:53.8421060Z               "line": 94
2026-06-21T04:47:53.8421323Z             },
2026-06-21T04:47:53.8421690Z             {
2026-06-21T04:47:53.8422033Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T04:47:53.8422314Z               "line": 111
2026-06-21T04:47:53.8422582Z             },
2026-06-21T04:47:53.8422844Z             {
2026-06-21T04:47:53.8423190Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T04:47:53.8423484Z               "line": 124
2026-06-21T04:47:53.8423746Z             },
2026-06-21T04:47:53.8424012Z             {
2026-06-21T04:47:53.8424341Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T04:47:53.8424618Z               "line": 134
2026-06-21T04:47:53.8424886Z             },
2026-06-21T04:47:53.8425153Z             {
2026-06-21T04:47:53.8425487Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T04:47:53.8425769Z               "line": 144
2026-06-21T04:47:53.8426048Z             },
2026-06-21T04:47:53.8426315Z             {
2026-06-21T04:47:53.8426659Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T04:47:53.8426949Z               "line": 156
2026-06-21T04:47:53.8427216Z             },
2026-06-21T04:47:53.8427483Z             {
2026-06-21T04:47:53.8427879Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T04:47:53.8428168Z               "line": 746
2026-06-21T04:47:53.8428434Z             },
2026-06-21T04:47:53.8428706Z             {
2026-06-21T04:47:53.8429172Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T04:47:53.8429449Z               "line": 309
2026-06-21T04:47:53.8429711Z             }
2026-06-21T04:47:53.8429978Z           ]
2026-06-21T04:47:53.8430241Z         }
2026-06-21T04:47:53.8430504Z       }
2026-06-21T04:47:53.8430776Z     },
2026-06-21T04:47:53.8431036Z     {
2026-06-21T04:47:53.8431357Z       "id": "REQ-HAZARD-INBOX-NO-DOUBLE",
2026-06-21T04:47:53.8431773Z       "title": "No double-delivery via legacy inbox (4.5)",
2026-06-21T04:47:53.8432064Z       "requiredStages": [
2026-06-21T04:47:53.8432344Z         "impl",
2026-06-21T04:47:53.8432612Z         "unit"
2026-06-21T04:47:53.8432879Z       ],
2026-06-21T04:47:53.8433156Z       "stages": {
2026-06-21T04:47:53.8433414Z         "doc": {
2026-06-21T04:47:53.8433708Z           "complete": false,
2026-06-21T04:47:53.8433991Z           "evidence": []
2026-06-21T04:47:53.8434253Z         },
2026-06-21T04:47:53.8434535Z         "impl": {
2026-06-21T04:47:53.8434836Z           "complete": true,
2026-06-21T04:47:53.8435111Z           "evidence": [
2026-06-21T04:47:53.8435379Z             {
2026-06-21T04:47:53.8435741Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T04:47:53.8436023Z               "line": 128
2026-06-21T04:47:53.8436296Z             }
2026-06-21T04:47:53.8436556Z           ]
2026-06-21T04:47:53.8436818Z         },
2026-06-21T04:47:53.8437089Z         "int": {
2026-06-21T04:47:53.8437386Z           "complete": false,
2026-06-21T04:47:53.8437662Z           "evidence": []
2026-06-21T04:47:53.8437920Z         },
2026-06-21T04:47:53.8438183Z         "unit": {
2026-06-21T04:47:53.8438478Z           "complete": true,
2026-06-21T04:47:53.8438762Z           "evidence": [
2026-06-21T04:47:53.8439103Z             {
2026-06-21T04:47:53.8439461Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T04:47:53.8439752Z               "line": 205
2026-06-21T04:47:53.8440009Z             }
2026-06-21T04:47:53.8440381Z           ]
2026-06-21T04:47:53.8440648Z         }
2026-06-21T04:47:53.8440910Z       }
2026-06-21T04:47:53.8441172Z     },
2026-06-21T04:47:53.8441427Z     {
2026-06-21T04:47:53.8441781Z       "id": "REQ-HAZARD-INFO-JSON-TORN-READ",
2026-06-21T04:47:53.8442242Z       "title": "State-file reads tolerate concurrent writes (1.2)",
2026-06-21T04:47:53.8442538Z       "requiredStages": [
2026-06-21T04:47:53.8442805Z         "impl",
2026-06-21T04:47:53.8443072Z         "unit"
2026-06-21T04:47:53.8443340Z       ],
2026-06-21T04:47:53.8443612Z       "stages": {
2026-06-21T04:47:53.8443878Z         "doc": {
2026-06-21T04:47:53.8444167Z           "complete": false,
2026-06-21T04:47:53.8444623Z           "evidence": []
2026-06-21T04:47:53.8444875Z         },
2026-06-21T04:47:53.8445152Z         "impl": {
2026-06-21T04:47:53.8445438Z           "complete": true,
2026-06-21T04:47:53.8445715Z           "evidence": [
2026-06-21T04:47:53.8445982Z             {
2026-06-21T04:47:53.8446330Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T04:47:53.8446616Z               "line": 367
2026-06-21T04:47:53.8446870Z             },
2026-06-21T04:47:53.8447135Z             {
2026-06-21T04:47:53.8447498Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T04:47:53.8447775Z               "line": 378
2026-06-21T04:47:53.8448041Z             },
2026-06-21T04:47:53.8448303Z             {
2026-06-21T04:47:53.8448656Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T04:47:53.8448933Z               "line": 396
2026-06-21T04:47:53.8449285Z             }
2026-06-21T04:47:53.8449563Z           ]
2026-06-21T04:47:53.8449827Z         },
2026-06-21T04:47:53.8450103Z         "int": {
2026-06-21T04:47:53.8450389Z           "complete": false,
2026-06-21T04:47:53.8450670Z           "evidence": []
2026-06-21T04:47:53.8450931Z         },
2026-06-21T04:47:53.8451203Z         "unit": {
2026-06-21T04:47:53.8451504Z           "complete": true,
2026-06-21T04:47:53.8451785Z           "evidence": [
2026-06-21T04:47:53.8452057Z             {
2026-06-21T04:47:53.8452402Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T04:47:53.8452684Z               "line": 420
2026-06-21T04:47:53.8452946Z             },
2026-06-21T04:47:53.8453213Z             {
2026-06-21T04:47:53.8453566Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T04:47:53.8453833Z               "line": 441
2026-06-21T04:47:53.8454090Z             },
2026-06-21T04:47:53.8454352Z             {
2026-06-21T04:47:53.8454695Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T04:47:53.8454973Z               "line": 811
2026-06-21T04:47:53.8455246Z             },
2026-06-21T04:47:53.8455522Z             {
2026-06-21T04:47:53.8455870Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T04:47:53.8456161Z               "line": 822
2026-06-21T04:47:53.8456429Z             },
2026-06-21T04:47:53.8456695Z             {
2026-06-21T04:47:53.8457049Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T04:47:53.8457344Z               "line": 835
2026-06-21T04:47:53.8457599Z             }
2026-06-21T04:47:53.8457867Z           ]
2026-06-21T04:47:53.8458129Z         }
2026-06-21T04:47:53.8458392Z       }
2026-06-21T04:47:53.8458654Z     },
2026-06-21T04:47:53.8458911Z     {
2026-06-21T04:47:53.8459355Z       "id": "REQ-HAZARD-INJECT-CONTROL-COEXIST",
2026-06-21T04:47:53.8480370Z       "title": "SPINE INVARIANT (v0.13.0 keystone): the broker must accept INJECTED keystrokes into an spt-hosted PTY (the v0.11.0 raw direct-inject today; the ADR-0022 translation-binary choreography tomorrow) WHILE a live `spt rc` controller is attached to the SAME PTY, without (a) the operator losing control, (b) the endpoint latching ONLINE+CONTROLLED, or (c) the broker wedging. The injection inlet is PERMANENT — spt-claude-code requires keystroke injection — so this is root-caused + fixed at the PTY-injection layer, IN STEP with the ADR-0022 delivery redesign that formalizes the inlet. REOPENS the wedge facet of REQ-HAZARD-ATTACH-WEDGE: the v0.12.1 prove-don't-change covered only DEAD-CHILD backpressure, NOT the injection trigger (operator's signal — one injected keystroke succeeds, the next wedges → the single-threaded broker parks on a blocking PTY/loopback write after injection-induced harness output). REPRO-FIRST on the real dummy-harness fixture (NO theory): instrument to nail the exact blocking call before any fix. Fix candidates: non-blocking/fail-fast PTY write, split input/output, bounded-evicting. Mechanism shared with W2 — spt-core owns EVERY PTY write and applies an injected sequence ATOMICALLY (controller input buffered during the sequence, flushed after) so a stash/restore can't be clobbered. CONFIRMED ROOT (doyle /diagnose 2026-06-19, code-grounded): Broker::append (broker.rs:205-227) fans each live output chunk to the CONTROLLER on a SYNCHRONOUS BLOCKING write_frame held inline in the session's drain thread (the 'authoritative, advances delivered_through' path, D4-1), while VIEWERS use a dedicated writer thread + bounded evicting sync_channel (add_viewer:273 / viewer_writer) that can never stall the drain. So a slow/backed-up controller socket — or the full 64KB loopback duplex (the ATTACH-WEDGE buffer) — BLOCKS the drain thread → output stalls → keystroke echoes stall (PERCEIVED input lag) → unrecoverable wedge when the consumer never drains. TRIGGERS ON NORMAL INTERACTIVE rc USE under heavy harness output (TUI redraw), NOT only message injection — same root, wider repro. FIX DIRECTION: move controller delivery off the drain thread onto a dedicated writer (the viewer_writer pattern) BUT preserve the authoritative cursor — block the WRITER thread (not the drain), bound the wedge (deadline → detach/mark-gone, never park forever), never silently evict the operator's authoritative view. (v0.13.0)",
2026-06-21T04:47:53.8481031Z       "requiredStages": [
2026-06-21T04:47:53.8481305Z         "impl",
2026-06-21T04:47:53.8481564Z         "unit",
2026-06-21T04:47:53.8481864Z         "int"
2026-06-21T04:47:53.8482145Z       ],
2026-06-21T04:47:53.8482446Z       "stages": {
2026-06-21T04:47:53.8482694Z         "doc": {
2026-06-21T04:47:53.8482986Z           "complete": false,
2026-06-21T04:47:53.8483271Z           "evidence": []
2026-06-21T04:47:53.8483532Z         },
2026-06-21T04:47:53.8483803Z         "impl": {
2026-06-21T04:47:53.8484087Z           "complete": true,
2026-06-21T04:47:53.8484374Z           "evidence": [
2026-06-21T04:47:53.8484627Z             {
2026-06-21T04:47:53.8484998Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.8485280Z               "line": 300
2026-06-21T04:47:53.8485542Z             },
2026-06-21T04:47:53.8485809Z             {
2026-06-21T04:47:53.8486205Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.8486494Z               "line": 714
2026-06-21T04:47:53.8486758Z             },
2026-06-21T04:47:53.8487025Z             {
2026-06-21T04:47:53.8487388Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.8487669Z               "line": 978
2026-06-21T04:47:53.8487942Z             }
2026-06-21T04:47:53.8488208Z           ]
2026-06-21T04:47:53.8488481Z         },
2026-06-21T04:47:53.8488743Z         "int": {
2026-06-21T04:47:53.8489116Z           "complete": true,
2026-06-21T04:47:53.8489414Z           "evidence": [
2026-06-21T04:47:53.8489686Z             {
2026-06-21T04:47:53.8490149Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T04:47:53.8490429Z               "line": 256
2026-06-21T04:47:53.8490688Z             },
2026-06-21T04:47:53.8490945Z             {
2026-06-21T04:47:53.8491416Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T04:47:53.8491696Z               "line": 382
2026-06-21T04:47:53.8491962Z             }
2026-06-21T04:47:53.8492219Z           ]
2026-06-21T04:47:53.8492481Z         },
2026-06-21T04:47:53.8492752Z         "unit": {
2026-06-21T04:47:53.8493025Z           "complete": true,
2026-06-21T04:47:53.8493311Z           "evidence": [
2026-06-21T04:47:53.8493706Z             {
2026-06-21T04:47:53.8494079Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.8494364Z               "line": 2274
2026-06-21T04:47:53.8494629Z             },
2026-06-21T04:47:53.8494896Z             {
2026-06-21T04:47:53.8495263Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.8495549Z               "line": 2332
2026-06-21T04:47:53.8495797Z             }
2026-06-21T04:47:53.8496059Z           ]
2026-06-21T04:47:53.8496335Z         }
2026-06-21T04:47:53.8496592Z       }
2026-06-21T04:47:53.8496860Z     },
2026-06-21T04:47:53.8497111Z     {
2026-06-21T04:47:53.8497482Z       "id": "REQ-HAZARD-INPUT-ACK-BACKPRESSURE",
2026-06-21T04:47:53.8517656Z       "title": "A FLOOD of operator input on one brain↔broker connection deadlocks the broker PERMANENTLY (entire broker — no new/existing attach; the controller stays latched because the per-conn handler can't process the detach). ROOT (doyle /diagnose, code-grounded + HITL capture, the v0.13.0 P1 ctrl+V re-open): `serve_attach` processes a whole `NetStreamData` batch of N operator `Input` records in its inner `for rec in decoder.push()` loop, calling `brain.send_effect(op_id, &bytes)` N times WITHOUT returning to `read_event()` — so the brain writes N `KIND_INPUT` frames back-to-back and drains nothing. The broker's single-threaded per-conn handler answers EACH with `send_frame(applied_envelope)` on the SAME conn (B5 exactly-once ack, KNOWN-HAZARDS 7.2). With the brain not reading, the broker→brain return direction fills (~10 frames = the IPC pipe buffer) → `send_frame` BLOCKS → the handler stops reading → the brain's writes block too → mutual full-duplex DEADLOCK. Capture pinned it: 11 input frames, write_input 11/11 (P0 holds — the PTY write is fine), ack send START=11 / END=10 (frame #11's applied-ack never returns). Same class as the v0.12.1 L0 two-conn split. Windows Terminal's ctrl+V paste accelerator was the trigger (injects the clipboard as a char-by-char key flood) but the deadlock is generic to ANY input flood, NOT ctrl+V-specific and NOT a P0 (PTY-write) or W1 (output-drain) regression. The applied-ack is load-bearing ONLY for `shellchan` (one-at-a-time spool delivery WAITS on `BrokerEvent::Applied`); `serve_attach` DISCARDS it (the operator/rc path is fire-and-forward, op_id for dedup only, never gates on the ack). FIX (doyle-approved): CONDITIONAL ACK — `InputReq` gains `ack: bool` (serde default = true, N-1-safe: an older brain's input still acks = today's behavior). `serve_attach`'s operator path calls `send_effect_no_ack` (ack=false) → `dispatch_input` writes NO applied frame → the per-conn handler never writes back while servicing the flood → it always drains → no deadlock (cures ANY input flood). `shellchan` keeps `send_effect` (ack=true) and its `Applied`-wait. Exactly-once PRESERVED: the broker still dedups by (session, op_id) at the applied-set regardless of the ack. N-1 caveat: an OLD resident broker (self-update window) ignores `ack=false` → still acks → the deadlock persists until a broker restart (inherent KNOWN-HAZARDS 7.9 broker-resident-wire-change class). (v0.13.0)",
2026-06-21T04:47:53.8518146Z       "requiredStages": [
2026-06-21T04:47:53.8518410Z         "doc",
2026-06-21T04:47:53.8518683Z         "impl",
2026-06-21T04:47:53.8519035Z         "unit",
2026-06-21T04:47:53.8519293Z         "int"
2026-06-21T04:47:53.8519551Z       ],
2026-06-21T04:47:53.8519818Z       "stages": {
2026-06-21T04:47:53.8520090Z         "doc": {
2026-06-21T04:47:53.8520371Z           "complete": true,
2026-06-21T04:47:53.8520656Z           "evidence": [
2026-06-21T04:47:53.8520927Z             {
2026-06-21T04:47:53.8521256Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T04:47:53.8521566Z               "line": 454
2026-06-21T04:47:53.8521824Z             }
2026-06-21T04:47:53.8522091Z           ]
2026-06-21T04:47:53.8522354Z         },
2026-06-21T04:47:53.8522625Z         "impl": {
2026-06-21T04:47:53.8522921Z           "complete": true,
2026-06-21T04:47:53.8523334Z           "evidence": [
2026-06-21T04:47:53.8523599Z             {
2026-06-21T04:47:53.8523966Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T04:47:53.8524257Z               "line": 203
2026-06-21T04:47:53.8524524Z             },
2026-06-21T04:47:53.8524785Z             {
2026-06-21T04:47:53.8525148Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T04:47:53.8525429Z               "line": 487
2026-06-21T04:47:53.8525696Z             },
2026-06-21T04:47:53.8525955Z             {
2026-06-21T04:47:53.8526328Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.8526605Z               "line": 1688
2026-06-21T04:47:53.8526981Z             },
2026-06-21T04:47:53.8527243Z             {
2026-06-21T04:47:53.8527601Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T04:47:53.8527891Z               "line": 331
2026-06-21T04:47:53.8528150Z             }
2026-06-21T04:47:53.8528412Z           ]
2026-06-21T04:47:53.8528677Z         },
2026-06-21T04:47:53.8529037Z         "int": {
2026-06-21T04:47:53.8529328Z           "complete": true,
2026-06-21T04:47:53.8529614Z           "evidence": [
2026-06-21T04:47:53.8529872Z             {
2026-06-21T04:47:53.8530249Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T04:47:53.8530530Z               "line": 720
2026-06-21T04:47:53.8530787Z             },
2026-06-21T04:47:53.8531036Z             {
2026-06-21T04:47:53.8531421Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T04:47:53.8531698Z               "line": 837
2026-06-21T04:47:53.8531965Z             },
2026-06-21T04:47:53.8532226Z             {
2026-06-21T04:47:53.8532685Z               "path": "crates/spt-daemon/tests/input_ack_deadlock.rs",
2026-06-21T04:47:53.8532966Z               "line": 266
2026-06-21T04:47:53.8533229Z             }
2026-06-21T04:47:53.8533495Z           ]
2026-06-21T04:47:53.8533751Z         },
2026-06-21T04:47:53.8534021Z         "unit": {
2026-06-21T04:47:53.8534303Z           "complete": true,
2026-06-21T04:47:53.8534598Z           "evidence": [
2026-06-21T04:47:53.8534870Z             {
2026-06-21T04:47:53.8535218Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T04:47:53.8535500Z               "line": 985
2026-06-21T04:47:53.8535767Z             },
2026-06-21T04:47:53.8536033Z             {
2026-06-21T04:47:53.8536382Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T04:47:53.8536671Z               "line": 1019
2026-06-21T04:47:53.8536945Z             }
2026-06-21T04:47:53.8537213Z           ]
2026-06-21T04:47:53.8537474Z         }
2026-06-21T04:47:53.8537738Z       }
2026-06-21T04:47:53.8537994Z     },
2026-06-21T04:47:53.8538261Z     {
2026-06-21T04:47:53.8538609Z       "id": "REQ-HAZARD-INSTANT-UNDERFLOW",
2026-06-21T04:47:53.8540465Z       "title": "Scheduling never subtracts a Duration from Instant::now() (underflow-panics on a host booted more recently than the offset); 'due now / never run' is Option<Instant>=None gated on forward duration_since only (5.9)",
2026-06-21T04:47:53.8540766Z       "requiredStages": [
2026-06-21T04:47:53.8541043Z         "impl",
2026-06-21T04:47:53.8541305Z         "unit"
2026-06-21T04:47:53.8541564Z       ],
2026-06-21T04:47:53.8541844Z       "stages": {
2026-06-21T04:47:53.8542109Z         "doc": {
2026-06-21T04:47:53.8542405Z           "complete": false,
2026-06-21T04:47:53.8542691Z           "evidence": []
2026-06-21T04:47:53.8542959Z         },
2026-06-21T04:47:53.8543230Z         "impl": {
2026-06-21T04:47:53.8543536Z           "complete": true,
2026-06-21T04:47:53.8543808Z           "evidence": [
2026-06-21T04:47:53.8544075Z             {
2026-06-21T04:47:53.8544520Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T04:47:53.8544820Z               "line": 759
2026-06-21T04:47:53.8545082Z             }
2026-06-21T04:47:53.8549327Z           ]
2026-06-21T04:47:53.8549623Z         },
2026-06-21T04:47:53.8549893Z         "int": {
2026-06-21T04:47:53.8550191Z           "complete": false,
2026-06-21T04:47:53.8550626Z           "evidence": []
2026-06-21T04:47:53.8550897Z         },
2026-06-21T04:47:53.8551170Z         "unit": {
2026-06-21T04:47:53.8551465Z           "complete": true,
2026-06-21T04:47:53.8551741Z           "evidence": [
2026-06-21T04:47:53.8551998Z             {
2026-06-21T04:47:53.8552381Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T04:47:53.8552669Z               "line": 873
2026-06-21T04:47:53.8552936Z             }
2026-06-21T04:47:53.8553204Z           ]
2026-06-21T04:47:53.8553461Z         }
2026-06-21T04:47:53.8553729Z       }
2026-06-21T04:47:53.8553996Z     },
2026-06-21T04:47:53.8554253Z     {
2026-06-21T04:47:53.8554763Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-LIVENESS-GATE",
2026-06-21T04:47:53.8560795Z       "title": "B5: `spt daemon start` does NOT revive phantom Psyches for dead-but-online-latched perches. Today reconcile_once (livehost.rs:285) spawns a Psyche per status=online live_agent perch at boot WITHOUT verifying the harness child / {id}-psyche is actually alive — so a Cold start after an unclean stop revives N psyches for N dead-but-latched perches (3 psyches for 3 dead perches). FIX: gate the boot psyche-spawn on real child-liveness — a perch with NO live broker session (the B2 reconcile signal) is marked OFFLINE at boot instead of hosted, so a dead-harness perch is never revived. Shares the B2 reconcile loop (this is its boot-gate arm); composes with B2's honest latch. Also closes wall-a's psyche_host_error gap (residency-confirm does not run at boot tick-1, livehost.rs:395-441 / 257-263). (v0.12.0)",
2026-06-21T04:47:53.8561133Z       "requiredStages": [
2026-06-21T04:47:53.8561401Z         "impl",
2026-06-21T04:47:53.8561682Z         "unit",
2026-06-21T04:47:53.8561943Z         "int"
2026-06-21T04:47:53.8562206Z       ],
2026-06-21T04:47:53.8562472Z       "stages": {
2026-06-21T04:47:53.8562745Z         "doc": {
2026-06-21T04:47:53.8563032Z           "complete": false,
2026-06-21T04:47:53.8563316Z           "evidence": []
2026-06-21T04:47:53.8563602Z         },
2026-06-21T04:47:53.8563859Z         "impl": {
2026-06-21T04:47:53.8564145Z           "complete": true,
2026-06-21T04:47:53.8564422Z           "evidence": [
2026-06-21T04:47:53.8564679Z             {
2026-06-21T04:47:53.8565056Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.8565337Z               "line": 705
2026-06-21T04:47:53.8565598Z             }
2026-06-21T04:47:53.8565863Z           ]
2026-06-21T04:47:53.8566125Z         },
2026-06-21T04:47:53.8566388Z         "int": {
2026-06-21T04:47:53.8566678Z           "complete": true,
2026-06-21T04:47:53.8566951Z           "evidence": [
2026-06-21T04:47:53.8567213Z             {
2026-06-21T04:47:53.8567627Z               "path": "crates/spt/tests/livehost_bootgate_e2e.rs",
2026-06-21T04:47:53.8567904Z               "line": 24
2026-06-21T04:47:53.8568167Z             }
2026-06-21T04:47:53.8568433Z           ]
2026-06-21T04:47:53.8568697Z         },
2026-06-21T04:47:53.8569035Z         "unit": {
2026-06-21T04:47:53.8569331Z           "complete": true,
2026-06-21T04:47:53.8569617Z           "evidence": [
2026-06-21T04:47:53.8569880Z             {
2026-06-21T04:47:53.8570261Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.8570538Z               "line": 918
2026-06-21T04:47:53.8570804Z             }
2026-06-21T04:47:53.8571070Z           ]
2026-06-21T04:47:53.8571330Z         }
2026-06-21T04:47:53.8571573Z       }
2026-06-21T04:47:53.8571835Z     },
2026-06-21T04:47:53.8572089Z     {
2026-06-21T04:47:53.8572437Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-RACE",
2026-06-21T04:47:53.8581218Z       "title": "The brain's daemon-hosted Psyche lifecycle surfaces a host-FAILURE on the live perch (harness-diagnosable) and runs net-INDEPENDENTLY. When reconcile_once→host_one→spawn_psyche fails for a state=live_agent+status=online endpoint (e.g. the adapter's psyche binary absent from its install dir, REQ-INSTALL-11), the failure MUST be written to the perch info.json as a CURRENT-STATE field (reason + ts + attempt count; overwritten each 5s retry, CLEARED on successful host) and surfaced by `spt endpoint list`/status — never left as an eprintln on the brain's invisible stderr where a harness reading only perch state is blind. status=online stays authoritative (agent reachable; only the Psyche is missing — brain-restart rehydrate legitimately has online-without-Psyche windows), so this is a SEPARATE psyche-host-health field, never a status de-stamp. Net-independence is a locked-in invariant: spawn_live_host (brainproc.rs:230) reaches the reconcile and hosts the Psyche on a net-less/unpaired/peer-pump-STALLED node, proven by a REAL detached-daemon E2E (real broker→brain-child, real api seed+listen, real install-dir psyche binary). spt-core SURFACES the failure; the adapter owns fixing its packaging.",
2026-06-21T04:47:53.8581819Z       "requiredStages": [
2026-06-21T04:47:53.8582090Z         "impl",
2026-06-21T04:47:53.8582358Z         "unit",
2026-06-21T04:47:53.8582616Z         "int"
2026-06-21T04:47:53.8582892Z       ],
2026-06-21T04:47:53.8583184Z       "stages": {
2026-06-21T04:47:53.8583451Z         "doc": {
2026-06-21T04:47:53.8583741Z           "complete": false,
2026-06-21T04:47:53.8584022Z           "evidence": []
2026-06-21T04:47:53.8584288Z         },
2026-06-21T04:47:53.8584551Z         "impl": {
2026-06-21T04:47:53.8584832Z           "complete": true,
2026-06-21T04:47:53.8585109Z           "evidence": [
2026-06-21T04:47:53.8585371Z             {
2026-06-21T04:47:53.8585753Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.8586034Z               "line": 391
2026-06-21T04:47:53.8586300Z             },
2026-06-21T04:47:53.8586562Z             {
2026-06-21T04:47:53.8586940Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T04:47:53.8587217Z               "line": 343
2026-06-21T04:47:53.8587474Z             },
2026-06-21T04:47:53.8587732Z             {
2026-06-21T04:47:53.8588057Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.8588343Z               "line": 1750
2026-06-21T04:47:53.8588606Z             },
2026-06-21T04:47:53.8588868Z             {
2026-06-21T04:47:53.8589274Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.8589553Z               "line": 3191
2026-06-21T04:47:53.8589817Z             }
2026-06-21T04:47:53.8590070Z           ]
2026-06-21T04:47:53.8590337Z         },
2026-06-21T04:47:53.8590595Z         "int": {
2026-06-21T04:47:53.8590891Z           "complete": true,
2026-06-21T04:47:53.8591168Z           "evidence": [
2026-06-21T04:47:53.8591420Z             {
2026-06-21T04:47:53.8591835Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T04:47:53.8592120Z               "line": 353
2026-06-21T04:47:53.8592379Z             },
2026-06-21T04:47:53.8592627Z             {
2026-06-21T04:47:53.8593052Z               "path": "crates/spt/tests/livehost_psyche_fail_e2e.rs",
2026-06-21T04:47:53.8593328Z               "line": 23
2026-06-21T04:47:53.8593590Z             }
2026-06-21T04:47:53.8593862Z           ]
2026-06-21T04:47:53.8594124Z         },
2026-06-21T04:47:53.8594388Z         "unit": {
2026-06-21T04:47:53.8594679Z           "complete": true,
2026-06-21T04:47:53.8594962Z           "evidence": [
2026-06-21T04:47:53.8595224Z             {
2026-06-21T04:47:53.8595573Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T04:47:53.8595858Z               "line": 743
2026-06-21T04:47:53.8596126Z             },
2026-06-21T04:47:53.8596393Z             {
2026-06-21T04:47:53.8596708Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.8596990Z               "line": 7863
2026-06-21T04:47:53.8597250Z             }
2026-06-21T04:47:53.8597515Z           ]
2026-06-21T04:47:53.8597782Z         }
2026-06-21T04:47:53.8598040Z       }
2026-06-21T04:47:53.8598292Z     },
2026-06-21T04:47:53.8598546Z     {
2026-06-21T04:47:53.8598903Z       "id": "REQ-HAZARD-LIVEHOST-NONRESIDENT",
2026-06-21T04:47:53.8606925Z       "title": "A daemon-hosted Psyche that spawns then EXITS IMMEDIATELY is a host failure, surfaced like a spawn failure (closes the v0.8.1 residual masking): the REQ-HAZARD-LIVEHOST-BOOT-RACE signal stamps `psyche_host_error` only when `spawn_psyche` returns Err, NOT when the detached spawn() returns Ok but the child dies within moments (e.g. a bad-argv child exiting 2 — the F-009 case). That leaves the residual 'online + no Psyche + no cause' gap: the nested `{id}-psyche` info.json is written status=online with a real-but-DEAD pid and the PARENT perch carries NO psyche_host_error (perri's F-010: tasklist showed 0 host procs across the window while info.json read online). The host MUST confirm RESIDENCY — a hosted child not alive (or whose `{id}-psyche` perch never re-registers / has a dead pid) within N seconds of spawn is treated as a host failure: stamp the parent perch `psyche_host_error{reason:\"host not resident within <n>s (psyche perch missing/dead pid)\"}` (and do not leave a phantom online nested perch). Closes the last masking gap the v0.8.1 fix left open. perri's F-010 (v0.8.1 dogfood). Sibling of REQ-HAZARD-LIVEHOST-BOOT-RACE.",
2026-06-21T04:47:53.8607488Z       "requiredStages": [
2026-06-21T04:47:53.8607763Z         "impl",
2026-06-21T04:47:53.8608022Z         "unit",
2026-06-21T04:47:53.8608280Z         "int"
2026-06-21T04:47:53.8608538Z       ],
2026-06-21T04:47:53.8608806Z       "stages": {
2026-06-21T04:47:53.8609144Z         "doc": {
2026-06-21T04:47:53.8609449Z           "complete": false,
2026-06-21T04:47:53.8609726Z           "evidence": []
2026-06-21T04:47:53.8609988Z         },
2026-06-21T04:47:53.8610254Z         "impl": {
2026-06-21T04:47:53.8610539Z           "complete": true,
2026-06-21T04:47:53.8610828Z           "evidence": [
2026-06-21T04:47:53.8611101Z             {
2026-06-21T04:47:53.8611467Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.8611734Z               "line": 64
2026-06-21T04:47:53.8611997Z             },
2026-06-21T04:47:53.8612259Z             {
2026-06-21T04:47:53.8612627Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.8612918Z               "line": 78
2026-06-21T04:47:53.8613177Z             },
2026-06-21T04:47:53.8613437Z             {
2026-06-21T04:47:53.8613795Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.8614081Z               "line": 170
2026-06-21T04:47:53.8614339Z             },
2026-06-21T04:47:53.8614606Z             {
2026-06-21T04:47:53.8614969Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.8615254Z               "line": 185
2026-06-21T04:47:53.8615522Z             },
2026-06-21T04:47:53.8615785Z             {
2026-06-21T04:47:53.8616189Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.8616479Z               "line": 195
2026-06-21T04:47:53.8616732Z             },
2026-06-21T04:47:53.8617008Z             {
2026-06-21T04:47:53.8617352Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.8617632Z               "line": 205
2026-06-21T04:47:53.8617904Z             },
2026-06-21T04:47:53.8618157Z             {
2026-06-21T04:47:53.8618502Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.8618775Z               "line": 294
2026-06-21T04:47:53.8619103Z             },
2026-06-21T04:47:53.8619356Z             {
2026-06-21T04:47:53.8619685Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.8619967Z               "line": 308
2026-06-21T04:47:53.8620238Z             },
2026-06-21T04:47:53.8620499Z             {
2026-06-21T04:47:53.8620834Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.8621109Z               "line": 377
2026-06-21T04:47:53.8621374Z             },
2026-06-21T04:47:53.8621641Z             {
2026-06-21T04:47:53.8621980Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.8622257Z               "line": 437
2026-06-21T04:47:53.8622505Z             },
2026-06-21T04:47:53.8622747Z             {
2026-06-21T04:47:53.8623062Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.8623430Z               "line": 455
2026-06-21T04:47:53.8623666Z             }
2026-06-21T04:47:53.8623894Z           ]
2026-06-21T04:47:53.8624131Z         },
2026-06-21T04:47:53.8624360Z         "int": {
2026-06-21T04:47:53.8624612Z           "complete": true,
2026-06-21T04:47:53.8624856Z           "evidence": [
2026-06-21T04:47:53.8625081Z             {
2026-06-21T04:47:53.8625410Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T04:47:53.8625652Z               "line": 45
2026-06-21T04:47:53.8625872Z             },
2026-06-21T04:47:53.8626106Z             {
2026-06-21T04:47:53.8626534Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T04:47:53.8626778Z               "line": 354
2026-06-21T04:47:53.8627011Z             },
2026-06-21T04:47:53.8627248Z             {
2026-06-21T04:47:53.8627573Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-21T04:47:53.8627830Z               "line": 31
2026-06-21T04:47:53.8628059Z             }
2026-06-21T04:47:53.8628290Z           ]
2026-06-21T04:47:53.8628527Z         },
2026-06-21T04:47:53.8628760Z         "unit": {
2026-06-21T04:47:53.8629081Z           "complete": true,
2026-06-21T04:47:53.8629325Z           "evidence": [
2026-06-21T04:47:53.8629558Z             {
2026-06-21T04:47:53.8629849Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.8630078Z               "line": 727
2026-06-21T04:47:53.8630254Z             }
2026-06-21T04:47:53.8630411Z           ]
2026-06-21T04:47:53.8630565Z         }
2026-06-21T04:47:53.8630731Z       }
2026-06-21T04:47:53.8630898Z     },
2026-06-21T04:47:53.8631064Z     {
2026-06-21T04:47:53.8631269Z       "id": "REQ-HAZARD-LOCAL-API-AUTH",
2026-06-21T04:47:53.8631613Z       "title": "Every local `api` mutation authenticated to an endpoint/session (codex #13)",
2026-06-21T04:47:53.8631789Z       "requiredStages": [
2026-06-21T04:47:53.8631958Z         "impl",
2026-06-21T04:47:53.8632120Z         "unit"
2026-06-21T04:47:53.8632287Z       ],
2026-06-21T04:47:53.8632464Z       "stages": {
2026-06-21T04:47:53.8632625Z         "doc": {
2026-06-21T04:47:53.8632812Z           "complete": false,
2026-06-21T04:47:53.8632982Z           "evidence": []
2026-06-21T04:47:53.8633146Z         },
2026-06-21T04:47:53.8633302Z         "impl": {
2026-06-21T04:47:53.8633479Z           "complete": true,
2026-06-21T04:47:53.8633641Z           "evidence": [
2026-06-21T04:47:53.8633799Z             {
2026-06-21T04:47:53.8634024Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T04:47:53.8634193Z               "line": 14
2026-06-21T04:47:53.8634364Z             },
2026-06-21T04:47:53.8634524Z             {
2026-06-21T04:47:53.8634740Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T04:47:53.8634920Z               "line": 566
2026-06-21T04:47:53.8635073Z             }
2026-06-21T04:47:53.8635235Z           ]
2026-06-21T04:47:53.8635393Z         },
2026-06-21T04:47:53.8635569Z         "int": {
2026-06-21T04:47:53.8635759Z           "complete": false,
2026-06-21T04:47:53.8635932Z           "evidence": []
2026-06-21T04:47:53.8636089Z         },
2026-06-21T04:47:53.8636257Z         "unit": {
2026-06-21T04:47:53.8636442Z           "complete": true,
2026-06-21T04:47:53.8636614Z           "evidence": [
2026-06-21T04:47:53.8636780Z             {
2026-06-21T04:47:53.8636995Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T04:47:53.8637169Z               "line": 130
2026-06-21T04:47:53.8637347Z             },
2026-06-21T04:47:53.8637503Z             {
2026-06-21T04:47:53.8637713Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T04:47:53.8637901Z               "line": 138
2026-06-21T04:47:53.8638075Z             },
2026-06-21T04:47:53.8638230Z             {
2026-06-21T04:47:53.8638443Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T04:47:53.8638610Z               "line": 146
2026-06-21T04:47:53.8638748Z             },
2026-06-21T04:47:53.8639087Z             {
2026-06-21T04:47:53.8639286Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T04:47:53.8639462Z               "line": 154
2026-06-21T04:47:53.8639613Z             },
2026-06-21T04:47:53.8639770Z             {
2026-06-21T04:47:53.8639956Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T04:47:53.8640109Z               "line": 162
2026-06-21T04:47:53.8640247Z             },
2026-06-21T04:47:53.8640375Z             {
2026-06-21T04:47:53.8640553Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T04:47:53.8640710Z               "line": 170
2026-06-21T04:47:53.8640843Z             }
2026-06-21T04:47:53.8640976Z           ]
2026-06-21T04:47:53.8641220Z         }
2026-06-21T04:47:53.8641363Z       }
2026-06-21T04:47:53.8641496Z     },
2026-06-21T04:47:53.8641625Z     {
2026-06-21T04:47:53.8641806Z       "id": "REQ-HAZARD-PAIR-RATE-LIMIT",
2026-06-21T04:47:53.8642875Z       "title": "Subnet-global pairing rate limit: one active ceremony per subnet, shared attempt counter, exponential backoff — a public pre-trust relay + multiple seed-holders otherwise enables distributed SPAKE2 guessing (and ±1 TOTP window triples the valid-password space) (ADR-0005 #11)",
2026-06-21T04:47:53.8643043Z       "requiredStages": [
2026-06-21T04:47:53.8643181Z         "impl",
2026-06-21T04:47:53.8643315Z         "unit"
2026-06-21T04:47:53.8643453Z       ],
2026-06-21T04:47:53.8643591Z       "stages": {
2026-06-21T04:47:53.8643734Z         "doc": {
2026-06-21T04:47:53.8643896Z           "complete": false,
2026-06-21T04:47:53.8644044Z           "evidence": []
2026-06-21T04:47:53.8644182Z         },
2026-06-21T04:47:53.8644336Z         "impl": {
2026-06-21T04:47:53.8644550Z           "complete": true,
2026-06-21T04:47:53.8644707Z           "evidence": [
2026-06-21T04:47:53.8644848Z             {
2026-06-21T04:47:53.8645075Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T04:47:53.8645209Z               "line": 34
2026-06-21T04:47:53.8645329Z             }
2026-06-21T04:47:53.8645475Z           ]
2026-06-21T04:47:53.8645591Z         },
2026-06-21T04:47:53.8645719Z         "int": {
2026-06-21T04:47:53.8645848Z           "complete": false,
2026-06-21T04:47:53.8645976Z           "evidence": []
2026-06-21T04:47:53.8646090Z         },
2026-06-21T04:47:53.8646211Z         "unit": {
2026-06-21T04:47:53.8646354Z           "complete": true,
2026-06-21T04:47:53.8646482Z           "evidence": [
2026-06-21T04:47:53.8646606Z             {
2026-06-21T04:47:53.8646812Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T04:47:53.8646935Z               "line": 188
2026-06-21T04:47:53.8647063Z             },
2026-06-21T04:47:53.8647189Z             {
2026-06-21T04:47:53.8647383Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T04:47:53.8647513Z               "line": 200
2026-06-21T04:47:53.8647630Z             },
2026-06-21T04:47:53.8647759Z             {
2026-06-21T04:47:53.8647945Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T04:47:53.8648073Z               "line": 211
2026-06-21T04:47:53.8648193Z             },
2026-06-21T04:47:53.8648306Z             {
2026-06-21T04:47:53.8648494Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T04:47:53.8648626Z               "line": 253
2026-06-21T04:47:53.8648746Z             },
2026-06-21T04:47:53.8648860Z             {
2026-06-21T04:47:53.8649128Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T04:47:53.8649256Z               "line": 277
2026-06-21T04:47:53.8649400Z             },
2026-06-21T04:47:53.8649527Z             {
2026-06-21T04:47:53.8649720Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T04:47:53.8649856Z               "line": 300
2026-06-21T04:47:53.8649965Z             },
2026-06-21T04:47:53.8650099Z             {
2026-06-21T04:47:53.8650286Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T04:47:53.8650544Z               "line": 316
2026-06-21T04:47:53.8650654Z             }
2026-06-21T04:47:53.8650774Z           ]
2026-06-21T04:47:53.8650902Z         }
2026-06-21T04:47:53.8651008Z       }
2026-06-21T04:47:53.8651118Z     },
2026-06-21T04:47:53.8651231Z     {
2026-06-21T04:47:53.8651389Z       "id": "REQ-HAZARD-PAIR-SEED-ROTATION",
2026-06-21T04:47:53.8652042Z       "title": "Removing a node rotates the subnet seed (epoch bump) so an old node/old seed cannot rejoin; trust-store delete alone is NOT revocation because the seed is replicated to every trusted node (ADR-0005 #10)",
2026-06-21T04:47:53.8652185Z       "requiredStages": [
2026-06-21T04:47:53.8652310Z         "impl",
2026-06-21T04:47:53.8652558Z         "unit"
2026-06-21T04:47:53.8652676Z       ],
2026-06-21T04:47:53.8652794Z       "stages": {
2026-06-21T04:47:53.8652914Z         "doc": {
2026-06-21T04:47:53.8653040Z           "complete": false,
2026-06-21T04:47:53.8653168Z           "evidence": []
2026-06-21T04:47:53.8653293Z         },
2026-06-21T04:47:53.8653416Z         "impl": {
2026-06-21T04:47:53.8653541Z           "complete": true,
2026-06-21T04:47:53.8653675Z           "evidence": [
2026-06-21T04:47:53.8653793Z             {
2026-06-21T04:47:53.8653961Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T04:47:53.8654089Z               "line": 29
2026-06-21T04:47:53.8654205Z             },
2026-06-21T04:47:53.8654323Z             {
2026-06-21T04:47:53.8654490Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T04:47:53.8654613Z               "line": 174
2026-06-21T04:47:53.8654728Z             },
2026-06-21T04:47:53.8654853Z             {
2026-06-21T04:47:53.8655014Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T04:47:53.8655154Z               "line": 194
2026-06-21T04:47:53.8655271Z             },
2026-06-21T04:47:53.8655399Z             {
2026-06-21T04:47:53.8655565Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T04:47:53.8655682Z               "line": 222
2026-06-21T04:47:53.8655817Z             }
2026-06-21T04:47:53.8655936Z           ]
2026-06-21T04:47:53.8656060Z         },
2026-06-21T04:47:53.8656175Z         "int": {
2026-06-21T04:47:53.8656317Z           "complete": false,
2026-06-21T04:47:53.8656451Z           "evidence": []
2026-06-21T04:47:53.8656565Z         },
2026-06-21T04:47:53.8656689Z         "unit": {
2026-06-21T04:47:53.8656823Z           "complete": true,
2026-06-21T04:47:53.8656951Z           "evidence": [
2026-06-21T04:47:53.8657067Z             {
2026-06-21T04:47:53.8657214Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T04:47:53.8657352Z               "line": 329
2026-06-21T04:47:53.8657471Z             },
2026-06-21T04:47:53.8657595Z             {
2026-06-21T04:47:53.8657758Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T04:47:53.8657896Z               "line": 344
2026-06-21T04:47:53.8658016Z             },
2026-06-21T04:47:53.8658129Z             {
2026-06-21T04:47:53.8658295Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T04:47:53.8658429Z               "line": 417
2026-06-21T04:47:53.8658547Z             },
2026-06-21T04:47:53.8658658Z             {
2026-06-21T04:47:53.8658839Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T04:47:53.8659049Z               "line": 433
2026-06-21T04:47:53.8659168Z             },
2026-06-21T04:47:53.8659292Z             {
2026-06-21T04:47:53.8659444Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T04:47:53.8659578Z               "line": 492
2026-06-21T04:47:53.8659698Z             },
2026-06-21T04:47:53.8659821Z             {
2026-06-21T04:47:53.8659979Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T04:47:53.8660116Z               "line": 506
2026-06-21T04:47:53.8660231Z             },
2026-06-21T04:47:53.8660346Z             {
2026-06-21T04:47:53.8660511Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T04:47:53.8660640Z               "line": 517
2026-06-21T04:47:53.8660766Z             },
2026-06-21T04:47:53.8660981Z             {
2026-06-21T04:47:53.8661138Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T04:47:53.8661268Z               "line": 528
2026-06-21T04:47:53.8661382Z             }
2026-06-21T04:47:53.8661505Z           ]
2026-06-21T04:47:53.8661616Z         }
2026-06-21T04:47:53.8661734Z       }
2026-06-21T04:47:53.8661845Z     },
2026-06-21T04:47:53.8661968Z     {
2026-06-21T04:47:53.8662144Z       "id": "REQ-HAZARD-PAIR-TRANSCRIPT-BIND",
2026-06-21T04:47:53.8662908Z       "title": "Pairing transcript binds roles, both node pubkeys, subnet ID, seed epoch, TOTP time-step, and confirmation MACs — or unknown-key-share/reflection/wrong-subnet/replay pairing remain possible (ADR-0005 #12)",
2026-06-21T04:47:53.8663157Z       "requiredStages": [
2026-06-21T04:47:53.8663278Z         "impl",
2026-06-21T04:47:53.8663406Z         "unit"
2026-06-21T04:47:53.8663526Z       ],
2026-06-21T04:47:53.8663648Z       "stages": {
2026-06-21T04:47:53.8663772Z         "doc": {
2026-06-21T04:47:53.8663911Z           "complete": false,
2026-06-21T04:47:53.8664043Z           "evidence": []
2026-06-21T04:47:53.8664154Z         },
2026-06-21T04:47:53.8664286Z         "impl": {
2026-06-21T04:47:53.8664416Z           "complete": true,
2026-06-21T04:47:53.8664530Z           "evidence": [
2026-06-21T04:47:53.8664644Z             {
2026-06-21T04:47:53.8664826Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T04:47:53.8664954Z               "line": 27
2026-06-21T04:47:53.8665075Z             },
2026-06-21T04:47:53.8665188Z             {
2026-06-21T04:47:53.8665365Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T04:47:53.8665498Z               "line": 110
2026-06-21T04:47:53.8665617Z             },
2026-06-21T04:47:53.8665724Z             {
2026-06-21T04:47:53.8665898Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T04:47:53.8666026Z               "line": 153
2026-06-21T04:47:53.8666153Z             },
2026-06-21T04:47:53.8666295Z             {
2026-06-21T04:47:53.8666473Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T04:47:53.8666595Z               "line": 182
2026-06-21T04:47:53.8666711Z             },
2026-06-21T04:47:53.8666825Z             {
2026-06-21T04:47:53.8667026Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T04:47:53.8667154Z               "line": 31
2026-06-21T04:47:53.8667278Z             },
2026-06-21T04:47:53.8667388Z             {
2026-06-21T04:47:53.8667588Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T04:47:53.8667712Z               "line": 113
2026-06-21T04:47:53.8667841Z             },
2026-06-21T04:47:53.8667956Z             {
2026-06-21T04:47:53.8668150Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T04:47:53.8668285Z               "line": 138
2026-06-21T04:47:53.8668398Z             }
2026-06-21T04:47:53.8668523Z           ]
2026-06-21T04:47:53.8668633Z         },
2026-06-21T04:47:53.8668765Z         "int": {
2026-06-21T04:47:53.8668888Z           "complete": false,
2026-06-21T04:47:53.8669103Z           "evidence": []
2026-06-21T04:47:53.8669218Z         },
2026-06-21T04:47:53.8669323Z         "unit": {
2026-06-21T04:47:53.8669450Z           "complete": true,
2026-06-21T04:47:53.8669576Z           "evidence": [
2026-06-21T04:47:53.8669704Z             {
2026-06-21T04:47:53.8669886Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T04:47:53.8670009Z               "line": 261
2026-06-21T04:47:53.8670138Z             },
2026-06-21T04:47:53.8670258Z             {
2026-06-21T04:47:53.8670438Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T04:47:53.8670563Z               "line": 276
2026-06-21T04:47:53.8670681Z             },
2026-06-21T04:47:53.8670796Z             {
2026-06-21T04:47:53.8670972Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T04:47:53.8671104Z               "line": 293
2026-06-21T04:47:53.8671345Z             },
2026-06-21T04:47:53.8671465Z             {
2026-06-21T04:47:53.8671641Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T04:47:53.8671770Z               "line": 310
2026-06-21T04:47:53.8671899Z             },
2026-06-21T04:47:53.8672017Z             {
2026-06-21T04:47:53.8672199Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T04:47:53.8672313Z               "line": 327
2026-06-21T04:47:53.8672433Z             },
2026-06-21T04:47:53.8672552Z             {
2026-06-21T04:47:53.8672729Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T04:47:53.8672862Z               "line": 366
2026-06-21T04:47:53.8673082Z             },
2026-06-21T04:47:53.8673200Z             {
2026-06-21T04:47:53.8673397Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T04:47:53.8673533Z               "line": 179
2026-06-21T04:47:53.8673644Z             },
2026-06-21T04:47:53.8673760Z             {
2026-06-21T04:47:53.8673966Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T04:47:53.8674086Z               "line": 194
2026-06-21T04:47:53.8674213Z             },
2026-06-21T04:47:53.8674328Z             {
2026-06-21T04:47:53.8674527Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T04:47:53.8674661Z               "line": 204
2026-06-21T04:47:53.8674786Z             },
2026-06-21T04:47:53.8674909Z             {
2026-06-21T04:47:53.8675090Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T04:47:53.8675223Z               "line": 259
2026-06-21T04:47:53.8675325Z             },
2026-06-21T04:47:53.8675458Z             {
2026-06-21T04:47:53.8675640Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T04:47:53.8675771Z               "line": 269
2026-06-21T04:47:53.8675896Z             },
2026-06-21T04:47:53.8676016Z             {
2026-06-21T04:47:53.8676206Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T04:47:53.8676340Z               "line": 283
2026-06-21T04:47:53.8676463Z             }
2026-06-21T04:47:53.8676576Z           ]
2026-06-21T04:47:53.8676690Z         }
2026-06-21T04:47:53.8676808Z       }
2026-06-21T04:47:53.8676918Z     },
2026-06-21T04:47:53.8677042Z     {
2026-06-21T04:47:53.8677194Z       "id": "REQ-HAZARD-PARENT-PID-PREFER",
2026-06-21T04:47:53.8677447Z       "title": "Prefer stable parent PID / broker handle over ephemeral PID (2.1)",
2026-06-21T04:47:53.8677577Z       "requiredStages": [],
2026-06-21T04:47:53.8677700Z       "stages": {
2026-06-21T04:47:53.8677819Z         "doc": {
2026-06-21T04:47:53.8677971Z           "complete": false,
2026-06-21T04:47:53.8678119Z           "evidence": []
2026-06-21T04:47:53.8678244Z         },
2026-06-21T04:47:53.8678381Z         "impl": {
2026-06-21T04:47:53.8678521Z           "complete": false,
2026-06-21T04:47:53.8678668Z           "evidence": []
2026-06-21T04:47:53.8678797Z         },
2026-06-21T04:47:53.8678934Z         "int": {
2026-06-21T04:47:53.8679156Z           "complete": false,
2026-06-21T04:47:53.8679282Z           "evidence": []
2026-06-21T04:47:53.8679396Z         },
2026-06-21T04:47:53.8679526Z         "unit": {
2026-06-21T04:47:53.8679654Z           "complete": false,
2026-06-21T04:47:53.8679792Z           "evidence": []
2026-06-21T04:47:53.8679907Z         }
2026-06-21T04:47:53.8680030Z       }
2026-06-21T04:47:53.8680145Z     },
2026-06-21T04:47:53.8680260Z     {
2026-06-21T04:47:53.8680422Z       "id": "REQ-HAZARD-PSYCHE-OUTBOUND-PROXY",
2026-06-21T04:47:53.8681396Z       "title": "Psyche outbound captured + sanitized: the live-Psyche turn driver captures stdout (never Stdio::null), and the daemon strips/re-stamps Psyche-supplied from=/target and constrains routing (reply→__REPLY_TO__ sender, notify→own user/subnet) (7.3)",
2026-06-21T04:47:53.8681546Z       "requiredStages": [
2026-06-21T04:47:53.8681669Z         "impl",
2026-06-21T04:47:53.8681793Z         "unit"
2026-06-21T04:47:53.8682020Z       ],
2026-06-21T04:47:53.8682141Z       "stages": {
2026-06-21T04:47:53.8682258Z         "doc": {
2026-06-21T04:47:53.8682388Z           "complete": false,
2026-06-21T04:47:53.8682521Z           "evidence": []
2026-06-21T04:47:53.8682630Z         },
2026-06-21T04:47:53.8682746Z         "impl": {
2026-06-21T04:47:53.8682878Z           "complete": true,
2026-06-21T04:47:53.8683003Z           "evidence": [
2026-06-21T04:47:53.8683136Z             {
2026-06-21T04:47:53.8683313Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T04:47:53.8683441Z               "line": 26
2026-06-21T04:47:53.8683565Z             },
2026-06-21T04:47:53.8683804Z             {
2026-06-21T04:47:53.8683990Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T04:47:53.8684118Z               "line": 95
2026-06-21T04:47:53.8684243Z             },
2026-06-21T04:47:53.8684348Z             {
2026-06-21T04:47:53.8684522Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T04:47:53.8684646Z               "line": 166
2026-06-21T04:47:53.8684768Z             },
2026-06-21T04:47:53.8684897Z             {
2026-06-21T04:47:53.8685059Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T04:47:53.8685187Z               "line": 19
2026-06-21T04:47:53.8685293Z             },
2026-06-21T04:47:53.8685416Z             {
2026-06-21T04:47:53.8685584Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T04:47:53.8685713Z               "line": 50
2026-06-21T04:47:53.8685836Z             },
2026-06-21T04:47:53.8685942Z             {
2026-06-21T04:47:53.8686103Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T04:47:53.8686224Z               "line": 18
2026-06-21T04:47:53.8686351Z             },
2026-06-21T04:47:53.8686466Z             {
2026-06-21T04:47:53.8686623Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T04:47:53.8686752Z               "line": 71
2026-06-21T04:47:53.8686868Z             },
2026-06-21T04:47:53.8686989Z             {
2026-06-21T04:47:53.8687141Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T04:47:53.8687273Z               "line": 87
2026-06-21T04:47:53.8687387Z             }
2026-06-21T04:47:53.8687507Z           ]
2026-06-21T04:47:53.8687625Z         },
2026-06-21T04:47:53.8687735Z         "int": {
2026-06-21T04:47:53.8687860Z           "complete": false,
2026-06-21T04:47:53.8687997Z           "evidence": []
2026-06-21T04:47:53.8688123Z         },
2026-06-21T04:47:53.8688237Z         "unit": {
2026-06-21T04:47:53.8688364Z           "complete": true,
2026-06-21T04:47:53.8688494Z           "evidence": [
2026-06-21T04:47:53.8688603Z             {
2026-06-21T04:47:53.8688776Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T04:47:53.8688908Z               "line": 289
2026-06-21T04:47:53.8689115Z             },
2026-06-21T04:47:53.8689228Z             {
2026-06-21T04:47:53.8689415Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T04:47:53.8689552Z               "line": 314
2026-06-21T04:47:53.8689663Z             },
2026-06-21T04:47:53.8689786Z             {
2026-06-21T04:47:53.8689951Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T04:47:53.8690081Z               "line": 350
2026-06-21T04:47:53.8690200Z             },
2026-06-21T04:47:53.8690323Z             {
2026-06-21T04:47:53.8690495Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T04:47:53.8690619Z               "line": 418
2026-06-21T04:47:53.8690743Z             },
2026-06-21T04:47:53.8690852Z             {
2026-06-21T04:47:53.8691011Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T04:47:53.8691144Z               "line": 429
2026-06-21T04:47:53.8691258Z             },
2026-06-21T04:47:53.8691368Z             {
2026-06-21T04:47:53.8691535Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T04:47:53.8691664Z               "line": 460
2026-06-21T04:47:53.8691768Z             },
2026-06-21T04:47:53.8691888Z             {
2026-06-21T04:47:53.8692182Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T04:47:53.8692306Z               "line": 471
2026-06-21T04:47:53.8692428Z             },
2026-06-21T04:47:53.8692547Z             {
2026-06-21T04:47:53.8692705Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T04:47:53.8692832Z               "line": 77
2026-06-21T04:47:53.8692948Z             },
2026-06-21T04:47:53.8693072Z             {
2026-06-21T04:47:53.8693230Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T04:47:53.8693363Z               "line": 97
2026-06-21T04:47:53.8693481Z             },
2026-06-21T04:47:53.8693606Z             {
2026-06-21T04:47:53.8693864Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T04:47:53.8693997Z               "line": 112
2026-06-21T04:47:53.8694120Z             },
2026-06-21T04:47:53.8694231Z             {
2026-06-21T04:47:53.8694388Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T04:47:53.8694513Z               "line": 123
2026-06-21T04:47:53.8694635Z             },
2026-06-21T04:47:53.8694745Z             {
2026-06-21T04:47:53.8694913Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T04:47:53.8695035Z               "line": 130
2026-06-21T04:47:53.8695150Z             },
2026-06-21T04:47:53.8695267Z             {
2026-06-21T04:47:53.8695428Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T04:47:53.8695557Z               "line": 145
2026-06-21T04:47:53.8695666Z             },
2026-06-21T04:47:53.8695787Z             {
2026-06-21T04:47:53.8695944Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T04:47:53.8696072Z               "line": 115
2026-06-21T04:47:53.8696192Z             },
2026-06-21T04:47:53.8696305Z             {
2026-06-21T04:47:53.8700550Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T04:47:53.8700713Z               "line": 130
2026-06-21T04:47:53.8700840Z             },
2026-06-21T04:47:53.8700965Z             {
2026-06-21T04:47:53.8701136Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T04:47:53.8701271Z               "line": 428
2026-06-21T04:47:53.8701384Z             }
2026-06-21T04:47:53.8701509Z           ]
2026-06-21T04:47:53.8701618Z         }
2026-06-21T04:47:53.8701741Z       }
2026-06-21T04:47:53.8701852Z     },
2026-06-21T04:47:53.8701966Z     {
2026-06-21T04:47:53.8702138Z       "id": "REQ-HAZARD-PTY-INPUT-WRITER-WEDGE",
2026-06-21T04:47:53.8708928Z       "title": "Pasting into an `spt rc` session WEDGES the broker — after a paste the operator can no longer type AND can no longer attach to NEW or EXISTING sessions (`brain IPC read deadline`). ROOT (doyle /diagnose, code-grounded): the operator-keystroke path rc -> net-stream Input -> serve_attach (attach.rs:197 brain.send_effect) -> KIND_INPUT -> broker dispatch loop (broker.rs:1091) -> dispatch_input (broker.rs:1459) -> session.write_input(&bytes) runs SYNCHRONOUSLY on the broker request-handling thread. W1b (REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE) released the journal lock across the effect (fix 1) + made PtyWrite ephemeral/no-fsync (fix 3) but EXPLICITLY DEFERRED fix (2) — bound/fail-fast the PtyWrite itself. A single keystroke never fills the ConPTY input buffer; a PASTE BURST does -> write_input blocks -> the dispatch thread cannot service the next frame (a re-attach subscribe, a become_controller restore-write, an inject-floor flush) -> wedge. Not a bug-2 regression (the byte path funnels to the same write_input; paste just reliably fills the buffer). FIX (doyle design, V0.13.0-P0-PTY-INPUT-WRITER-DESIGN.md, CONTEXT L33 broker-owns-PTY/minimal + L435 SessionSurface + single-writer pattern): one dedicated per-session INPUT-WRITER THREAD = the SOLE caller of the blocking write_input, fed by a BOUNDED FIFO channel; every caller (dispatch_input, serve_attach->send_effect, inject-floor flush) ENQUEUES + returns immediately, never blocks. A blocked/slow harness blocks ONLY its own writer thread, never the broker dispatch. Backpressure (operator ruling): queue full => DROP excess input + stamp the session INPUT_BACKPRESSURE (visible health signal); the daemon NEVER wedges; a merely-slow harness self-heals as the writer drains. Exactly-once preserved (PtyWrite ephemeral: apply_once effect = the non-blocking enqueue => Applied; ack now means accepted+ordered, benign — rc does not gate on landing); order preserved (single FIFO + single writer); inject-floor (W2 Layer C) choreography moves to the lone writer. Completes the W1b-deferred fix (2), cross-platform (cfg(unix) forkpty park folds in). (v0.13.0)",
2026-06-21T04:47:53.8709456Z       "requiredStages": [
2026-06-21T04:47:53.8709605Z         "impl",
2026-06-21T04:47:53.8709828Z         "unit",
2026-06-21T04:47:53.8709943Z         "int"
2026-06-21T04:47:53.8710048Z       ],
2026-06-21T04:47:53.8710178Z       "stages": {
2026-06-21T04:47:53.8710291Z         "doc": {
2026-06-21T04:47:53.8710424Z           "complete": false,
2026-06-21T04:47:53.8710545Z           "evidence": []
2026-06-21T04:47:53.8710662Z         },
2026-06-21T04:47:53.8710788Z         "impl": {
2026-06-21T04:47:53.8710912Z           "complete": true,
2026-06-21T04:47:53.8711043Z           "evidence": [
2026-06-21T04:47:53.8711158Z             {
2026-06-21T04:47:53.8711329Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.8711454Z               "line": 895
2026-06-21T04:47:53.8711573Z             },
2026-06-21T04:47:53.8711691Z             {
2026-06-21T04:47:53.8711850Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T04:47:53.8711982Z               "line": 322
2026-06-21T04:47:53.8712098Z             }
2026-06-21T04:47:53.8712212Z           ]
2026-06-21T04:47:53.8712330Z         },
2026-06-21T04:47:53.8712456Z         "int": {
2026-06-21T04:47:53.8712598Z           "complete": true,
2026-06-21T04:47:53.8712723Z           "evidence": [
2026-06-21T04:47:53.8712836Z             {
2026-06-21T04:47:53.8713032Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T04:47:53.8713170Z               "line": 1962
2026-06-21T04:47:53.8713283Z             }
2026-06-21T04:47:53.8713407Z           ]
2026-06-21T04:47:53.8713520Z         },
2026-06-21T04:47:53.8713628Z         "unit": {
2026-06-21T04:47:53.8713763Z           "complete": true,
2026-06-21T04:47:53.8713891Z           "evidence": [
2026-06-21T04:47:53.8714006Z             {
2026-06-21T04:47:53.8714173Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.8714296Z               "line": 2376
2026-06-21T04:47:53.8714416Z             },
2026-06-21T04:47:53.8714530Z             {
2026-06-21T04:47:53.8714698Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.8714816Z               "line": 2440
2026-06-21T04:47:53.8714935Z             },
2026-06-21T04:47:53.8715041Z             {
2026-06-21T04:47:53.8715207Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.8715333Z               "line": 2495
2026-06-21T04:47:53.8715436Z             }
2026-06-21T04:47:53.8715555Z           ]
2026-06-21T04:47:53.8715662Z         }
2026-06-21T04:47:53.8715784Z       }
2026-06-21T04:47:53.8715900Z     },
2026-06-21T04:47:53.8716023Z     {
2026-06-21T04:47:53.8716178Z       "id": "REQ-HAZARD-PUMP-IPC-DEADLINE",
2026-06-21T04:47:53.8717139Z       "title": "The single-threaded peer pump's brain-IPC reads are deadline-bounded (PUMP_PEER_IO_TIMEOUT, total-wait per call); a TimedOut read POISONS the client and escalates to a SUPERVISED RESTART, never a per-peer retry — a black-holed peer must never wedge the whole pump",
2026-06-21T04:47:53.8717279Z       "requiredStages": [
2026-06-21T04:47:53.8717388Z         "doc",
2026-06-21T04:47:53.8717517Z         "impl",
2026-06-21T04:47:53.8717645Z         "unit"
2026-06-21T04:47:53.8717755Z       ],
2026-06-21T04:47:53.8717880Z       "stages": {
2026-06-21T04:47:53.8717989Z         "doc": {
2026-06-21T04:47:53.8718127Z           "complete": true,
2026-06-21T04:47:53.8718252Z           "evidence": [
2026-06-21T04:47:53.8718370Z             {
2026-06-21T04:47:53.8718623Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T04:47:53.8718750Z               "line": 374
2026-06-21T04:47:53.8718869Z             }
2026-06-21T04:47:53.8719062Z           ]
2026-06-21T04:47:53.8719177Z         },
2026-06-21T04:47:53.8719297Z         "impl": {
2026-06-21T04:47:53.8719449Z           "complete": true,
2026-06-21T04:47:53.8719578Z           "evidence": [
2026-06-21T04:47:53.8719692Z             {
2026-06-21T04:47:53.8719860Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T04:47:53.8719983Z               "line": 200
2026-06-21T04:47:53.8720099Z             },
2026-06-21T04:47:53.8720217Z             {
2026-06-21T04:47:53.8720494Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T04:47:53.8720622Z               "line": 304
2026-06-21T04:47:53.8720743Z             },
2026-06-21T04:47:53.8720861Z             {
2026-06-21T04:47:53.8721014Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T04:47:53.8721152Z               "line": 562
2026-06-21T04:47:53.8721252Z             },
2026-06-21T04:47:53.8721372Z             {
2026-06-21T04:47:53.8721528Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T04:47:53.8721651Z               "line": 577
2026-06-21T04:47:53.8721776Z             },
2026-06-21T04:47:53.8721885Z             {
2026-06-21T04:47:53.8722042Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T04:47:53.8722167Z               "line": 1224
2026-06-21T04:47:53.8722280Z             },
2026-06-21T04:47:53.8722386Z             {
2026-06-21T04:47:53.8722556Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T04:47:53.8722687Z               "line": 443
2026-06-21T04:47:53.8722795Z             },
2026-06-21T04:47:53.8722900Z             {
2026-06-21T04:47:53.8723063Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T04:47:53.8723186Z               "line": 590
2026-06-21T04:47:53.8723293Z             },
2026-06-21T04:47:53.8723401Z             {
2026-06-21T04:47:53.8723564Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T04:47:53.8723688Z               "line": 731
2026-06-21T04:47:53.8723791Z             }
2026-06-21T04:47:53.8723895Z           ]
2026-06-21T04:47:53.8724006Z         },
2026-06-21T04:47:53.8724108Z         "int": {
2026-06-21T04:47:53.8724237Z           "complete": false,
2026-06-21T04:47:53.8724362Z           "evidence": []
2026-06-21T04:47:53.8724470Z         },
2026-06-21T04:47:53.8724590Z         "unit": {
2026-06-21T04:47:53.8724715Z           "complete": true,
2026-06-21T04:47:53.8724828Z           "evidence": [
2026-06-21T04:47:53.8724939Z             {
2026-06-21T04:47:53.8725104Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T04:47:53.8725220Z               "line": 1155
2026-06-21T04:47:53.8725319Z             },
2026-06-21T04:47:53.8725428Z             {
2026-06-21T04:47:53.8725606Z               "path": "crates/spt-daemon/tests/pumpdeadline.rs",
2026-06-21T04:47:53.8725724Z               "line": 30
2026-06-21T04:47:53.8725840Z             }
2026-06-21T04:47:53.8725944Z           ]
2026-06-21T04:47:53.8726058Z         }
2026-06-21T04:47:53.8726160Z       }
2026-06-21T04:47:53.8726273Z     },
2026-06-21T04:47:53.8726387Z     {
2026-06-21T04:47:53.8726532Z       "id": "REQ-HAZARD-RC-ATTACH-FAILFAST",
2026-06-21T04:47:53.8730290Z       "title": "B1: `spt rc <id>` to a DEAD or non-streaming session fails fast with a clear message, never an INFINITE blank screen. Today rc.rs run_attach (209-231) + pump spawns PUMP_IPC_READER and blocks: the poll times out each slice but the stream never produces output, so the operator sees a permanent blank (operator: fresh wall-f attached, closed tab, then `spt rc wall-f` HUNG — the broker still resolved a session for it). FIX: (a) once B2 lands, gate attach on is_online/status — an offline endpoint yields a clean 'endpoint offline, start it' not an attach; (b) fail-fast — if the attach-open ack / first output does not arrive within a bound, surface a clear message, never an infinite blank; (c) the broker EOFs the attach stream when the session's child is dead, so rc's existing PumpEnd::BrokerGone graceful path (REQ-HAZARD-RC-EOF) catches it. PIN the exact sub-mechanism with a repro test FIRST (dead-session-lingers-in-broker vs reaped-but-rc-waits vs alive-resting-no-wake — the wall-f Windows tab-close: child alive-silent vs dead-not-reaped). (v0.12.0)",
2026-06-21T04:47:53.8730562Z       "requiredStages": [
2026-06-21T04:47:53.8730683Z         "impl",
2026-06-21T04:47:53.8730787Z         "unit",
2026-06-21T04:47:53.8730891Z         "int"
2026-06-21T04:47:53.8730998Z       ],
2026-06-21T04:47:53.8731106Z       "stages": {
2026-06-21T04:47:53.8731322Z         "doc": {
2026-06-21T04:47:53.8731449Z           "complete": false,
2026-06-21T04:47:53.8731579Z           "evidence": []
2026-06-21T04:47:53.8731684Z         },
2026-06-21T04:47:53.8731792Z         "impl": {
2026-06-21T04:47:53.8731913Z           "complete": true,
2026-06-21T04:47:53.8732041Z           "evidence": [
2026-06-21T04:47:53.8732154Z             {
2026-06-21T04:47:53.8732307Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.8732426Z               "line": 718
2026-06-21T04:47:53.8732531Z             },
2026-06-21T04:47:53.8732641Z             {
2026-06-21T04:47:53.8732783Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.8732908Z               "line": 887
2026-06-21T04:47:53.8733012Z             }
2026-06-21T04:47:53.8733117Z           ]
2026-06-21T04:47:53.8733228Z         },
2026-06-21T04:47:53.8733332Z         "int": {
2026-06-21T04:47:53.8733455Z           "complete": true,
2026-06-21T04:47:53.8733566Z           "evidence": [
2026-06-21T04:47:53.8733675Z             {
2026-06-21T04:47:53.8733838Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T04:47:53.8733957Z               "line": 403
2026-06-21T04:47:53.8734066Z             }
2026-06-21T04:47:53.8734172Z           ]
2026-06-21T04:47:53.8734277Z         },
2026-06-21T04:47:53.8734389Z         "unit": {
2026-06-21T04:47:53.8734513Z           "complete": true,
2026-06-21T04:47:53.8734622Z           "evidence": [
2026-06-21T04:47:53.8734721Z             {
2026-06-21T04:47:53.8734869Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.8734974Z               "line": 1072
2026-06-21T04:47:53.8735078Z             },
2026-06-21T04:47:53.8735179Z             {
2026-06-21T04:47:53.8735312Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.8735426Z               "line": 1096
2026-06-21T04:47:53.8735537Z             }
2026-06-21T04:47:53.8735632Z           ]
2026-06-21T04:47:53.8735722Z         }
2026-06-21T04:47:53.8735833Z       }
2026-06-21T04:47:53.8735937Z     },
2026-06-21T04:47:53.8736046Z     {
2026-06-21T04:47:53.8736199Z       "id": "REQ-HAZARD-RC-ATTACH-ONLINE-RACE",
2026-06-21T04:47:53.8740317Z       "title": "`spt endpoint run` in an ATTACH/VIEW terminal action attaches BEFORE the freshly-spawned endpoint is online, so the attach races (or outright loses to) the harness bind. ROOT (doyle /diagnose, code-grounded): cmd_endpoint_run (cli.rs) does launch_harness_brokered_in -> (if start: return) -> run_attach with NO await-online between them. launch_harness_brokered_in returns once the harness PROCESS is spawned, but the broker-PTY bind (info status -> STATUS_ONLINE + the live session) lands ASYNC. Both picker attach paths route here with start=false (RunMode::Attach -> cmd_endpoint_run start=false,view=false): Start-now catches the endpoint mid-bringup -> run_attach attempts + loses the handshake race; Resume-from-history catches it still fully OFFLINE -> run_attach's status-gate (REQ-HAZARD-RC-ATTACH-FAILFAST) short-circuits 'offline - nothing to attach' and NEVER attempts. SAME root, two faces (the W4 attach-by-default surfaced both; an online endpoint is unaffected - the picker returns Outcome::Attach, not Run). FIX: in cmd_endpoint_run, when the terminal action is attach/view (NOT start), AWAIT the endpoint online between launch_harness_brokered_in success and run_attach - poll spt_store::info read_info().status to STATUS_ONLINE with a bounded harness-boot deadline (~25s) at a tight interval; on online -> run_attach; on timeout -> ENDPOINT_RUN_ONLINE_TIMEOUT err (do NOT attach a dead bringup). (v0.13.0)",
2026-06-21T04:47:53.8740594Z       "requiredStages": [
2026-06-21T04:47:53.8740699Z         "impl",
2026-06-21T04:47:53.8740803Z         "unit",
2026-06-21T04:47:53.8740909Z         "int"
2026-06-21T04:47:53.8741009Z       ],
2026-06-21T04:47:53.8741122Z       "stages": {
2026-06-21T04:47:53.8741229Z         "doc": {
2026-06-21T04:47:53.8741356Z           "complete": false,
2026-06-21T04:47:53.8741461Z           "evidence": []
2026-06-21T04:47:53.8741676Z         },
2026-06-21T04:47:53.8741776Z         "impl": {
2026-06-21T04:47:53.8741901Z           "complete": true,
2026-06-21T04:47:53.8742014Z           "evidence": [
2026-06-21T04:47:53.8742119Z             {
2026-06-21T04:47:53.8742263Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.8742377Z               "line": 1417
2026-06-21T04:47:53.8742473Z             },
2026-06-21T04:47:53.8742578Z             {
2026-06-21T04:47:53.8742719Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.8742834Z               "line": 1441
2026-06-21T04:47:53.8742939Z             }
2026-06-21T04:47:53.8743047Z           ]
2026-06-21T04:47:53.8743153Z         },
2026-06-21T04:47:53.8743263Z         "int": {
2026-06-21T04:47:53.8743371Z           "complete": true,
2026-06-21T04:47:53.8743487Z           "evidence": [
2026-06-21T04:47:53.8743587Z             {
2026-06-21T04:47:53.8743763Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-21T04:47:53.8743878Z               "line": 329
2026-06-21T04:47:53.8743982Z             }
2026-06-21T04:47:53.8744093Z           ]
2026-06-21T04:47:53.8744198Z         },
2026-06-21T04:47:53.8744307Z         "unit": {
2026-06-21T04:47:53.8744460Z           "complete": true,
2026-06-21T04:47:53.8744612Z           "evidence": [
2026-06-21T04:47:53.8744722Z             {
2026-06-21T04:47:53.8744860Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.8744969Z               "line": 8169
2026-06-21T04:47:53.8745069Z             }
2026-06-21T04:47:53.8745168Z           ]
2026-06-21T04:47:53.8745271Z         }
2026-06-21T04:47:53.8745377Z       }
2026-06-21T04:47:53.8745492Z     },
2026-06-21T04:47:53.8745585Z     {
2026-06-21T04:47:53.8745715Z       "id": "REQ-HAZARD-RC-EOF",
2026-06-21T04:47:53.8749885Z       "title": "A severed broker stream during a live rc session surfaces GRACEFULLY, never as a raw io error that crashes the PTY. The rc read-loop (rc.rs:352-362) continues only on WouldBlock/TimedOut; ANY other read_event_until error — including UnexpectedEof 'failed to fill whole buffer' — returns Err → RC_FAIL → the PTY 'crashes' from the user's view. Confirmed trigger: a deliberate `spt daemon stop` (broker bounce) severs an active rc (perri stopped the daemon to release owlery watch handles). Same severed-broker-stream EOF class as the v0.9.1 seed fix (seed_fail_message) and the listener-death case — spt-core must classify a broker-gone EOF and (a) surface a CLEAR actionable message ('daemon stopped/restarted — re-run / reconnect'), never the raw buffer error, and ideally (b) AUTO-REATTACH to the same session on the fresh broker (the broker is the daemon-lifetime anchor; it returns on the next `spt api` call). FOLD two side-observations: (1) `spt daemon stop` SILENTLY drops active rc/live sessions — warn ('N active session(s) will drop') or graceful-detach on stop; (2) the daemon holds owlery WATCH HANDLES on perch dirs so a torn-down perch dir stays 'Device busy' until a full daemon stop releases them (perri's rt-* cleanup) — a torn-down perch's handle should release without a daemon stop. doyle Finding C, root-caused. (post-v0.10.0)",
2026-06-21T04:47:53.8750084Z       "requiredStages": [
2026-06-21T04:47:53.8750195Z         "impl",
2026-06-21T04:47:53.8750298Z         "unit"
2026-06-21T04:47:53.8750403Z       ],
2026-06-21T04:47:53.8750634Z       "stages": {
2026-06-21T04:47:53.8750738Z         "doc": {
2026-06-21T04:47:53.8750858Z           "complete": false,
2026-06-21T04:47:53.8750968Z           "evidence": []
2026-06-21T04:47:53.8751076Z         },
2026-06-21T04:47:53.8751178Z         "impl": {
2026-06-21T04:47:53.8751297Z           "complete": true,
2026-06-21T04:47:53.8751415Z           "evidence": [
2026-06-21T04:47:53.8751516Z             {
2026-06-21T04:47:53.8751663Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.8751784Z               "line": 910
2026-06-21T04:47:53.8751892Z             }
2026-06-21T04:47:53.8751997Z           ]
2026-06-21T04:47:53.8752103Z         },
2026-06-21T04:47:53.8752322Z         "int": {
2026-06-21T04:47:53.8752433Z           "complete": false,
2026-06-21T04:47:53.8752560Z           "evidence": []
2026-06-21T04:47:53.8752656Z         },
2026-06-21T04:47:53.8752767Z         "unit": {
2026-06-21T04:47:53.8752884Z           "complete": true,
2026-06-21T04:47:53.8752994Z           "evidence": [
2026-06-21T04:47:53.8753096Z             {
2026-06-21T04:47:53.8753232Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.8753341Z               "line": 1112
2026-06-21T04:47:53.8753447Z             }
2026-06-21T04:47:53.8753551Z           ]
2026-06-21T04:47:53.8753651Z         }
2026-06-21T04:47:53.8753752Z       }
2026-06-21T04:47:53.8753856Z     },
2026-06-21T04:47:53.8753965Z     {
2026-06-21T04:47:53.8754119Z       "id": "REQ-HAZARD-RC-INPUT-KEY-ENCODING",
2026-06-21T04:47:53.8758828Z       "title": "An `spt rc` session forwards the Backspace key as the VT DEL byte (0x7f), so the hosted TUI (Claude Code) deletes ONE character — never a whole word. SYMPTOM (operator dogfooding): Backspace in an rc session always behaves like ctrl+Backspace — deletes the entire last word. ROOT (doyle /diagnose, code-grounded, byte PENDING HITL confirm): rc is a RAW VERBATIM byte pump — spawn_stdin_reader (rc.rs:152) reads std::io::stdin() bytes under crossterm raw mode and forwards them unchanged (parse_stdin_chunk only intercepts the ctrl-b detach prefix); there is NO key-event encoding and NO 0x08↔0x7f normalization ANYWHERE in the tree (grep: zero SetConsoleMode / ENABLE_VIRTUAL_TERMINAL_INPUT). On Windows, crossterm enable_raw_mode does NOT set ENABLE_VIRTUAL_TERMINAL_INPUT, so the LEGACY console delivers ^H (0x08, ctrl+h) for Backspace instead of VT DEL (0x7f); Claude Code maps ^H → backward-kill-word → the observed whole-word delete. CONFIRM-FIRST (build the loop): an env-gated hexdump in spawn_stdin_reader (SPT_RC_DEBUG_KEYS) prints the forwarded byte; operator presses Backspace + ctrl+Backspace in a real rc session. FIX CANDIDATES: (a) enable ENABLE_VIRTUAL_TERMINAL_INPUT on the rc stdin console on Windows so the console emits proper VT (Backspace→0x7f, arrows/Home/End as CSI) — cleanest, fixes the whole key map not just Backspace; (b) narrow normalize bare 0x08→0x7f in the rc input path (riskier — a real ctrl+h is also 0x08). Prefer (a) unless it regresses other keys. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-21T04:47:53.8759128Z       "requiredStages": [
2026-06-21T04:47:53.8759238Z         "impl",
2026-06-21T04:47:53.8759333Z         "unit"
2026-06-21T04:47:53.8759448Z       ],
2026-06-21T04:47:53.8759548Z       "stages": {
2026-06-21T04:47:53.8759657Z         "doc": {
2026-06-21T04:47:53.8759777Z           "complete": false,
2026-06-21T04:47:53.8759895Z           "evidence": []
2026-06-21T04:47:53.8760005Z         },
2026-06-21T04:47:53.8760111Z         "impl": {
2026-06-21T04:47:53.8760224Z           "complete": true,
2026-06-21T04:47:53.8760324Z           "evidence": [
2026-06-21T04:47:53.8760435Z             {
2026-06-21T04:47:53.8760581Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.8760692Z               "line": 264
2026-06-21T04:47:53.8760793Z             }
2026-06-21T04:47:53.8760891Z           ]
2026-06-21T04:47:53.8760995Z         },
2026-06-21T04:47:53.8761096Z         "int": {
2026-06-21T04:47:53.8761213Z           "complete": false,
2026-06-21T04:47:53.8761438Z           "evidence": []
2026-06-21T04:47:53.8761537Z         },
2026-06-21T04:47:53.8761646Z         "unit": {
2026-06-21T04:47:53.8761757Z           "complete": true,
2026-06-21T04:47:53.8761875Z           "evidence": [
2026-06-21T04:47:53.8761980Z             {
2026-06-21T04:47:53.8762114Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.8762228Z               "line": 1094
2026-06-21T04:47:53.8762329Z             },
2026-06-21T04:47:53.8762438Z             {
2026-06-21T04:47:53.8762567Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.8762673Z               "line": 1225
2026-06-21T04:47:53.8762781Z             },
2026-06-21T04:47:53.8762988Z             {
2026-06-21T04:47:53.8763115Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.8763225Z               "line": 1227
2026-06-21T04:47:53.8763327Z             }
2026-06-21T04:47:53.8763429Z           ]
2026-06-21T04:47:53.8763535Z         }
2026-06-21T04:47:53.8763641Z       }
2026-06-21T04:47:53.8763749Z     },
2026-06-21T04:47:53.8763853Z     {
2026-06-21T04:47:53.8763983Z       "id": "REQ-HAZARD-REGISTRY-CONCURRENT",
2026-06-21T04:47:53.8764283Z       "title": "Concurrent SQLite openers (registry/spool) must not fail with 'database is locked' (4.7)",
2026-06-21T04:47:53.8764398Z       "requiredStages": [
2026-06-21T04:47:53.8764506Z         "impl",
2026-06-21T04:47:53.8764608Z         "unit"
2026-06-21T04:47:53.8764712Z       ],
2026-06-21T04:47:53.8764831Z       "stages": {
2026-06-21T04:47:53.8764932Z         "doc": {
2026-06-21T04:47:53.8765055Z           "complete": true,
2026-06-21T04:47:53.8765164Z           "evidence": [
2026-06-21T04:47:53.8765271Z             {
2026-06-21T04:47:53.8765417Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T04:47:53.8765533Z               "line": 139
2026-06-21T04:47:53.8765642Z             }
2026-06-21T04:47:53.8765746Z           ]
2026-06-21T04:47:53.8765857Z         },
2026-06-21T04:47:53.8765962Z         "impl": {
2026-06-21T04:47:53.8766079Z           "complete": true,
2026-06-21T04:47:53.8766194Z           "evidence": [
2026-06-21T04:47:53.8766307Z             {
2026-06-21T04:47:53.8766458Z               "path": "crates/spt-store/src/db.rs",
2026-06-21T04:47:53.8766564Z               "line": 29
2026-06-21T04:47:53.8766668Z             },
2026-06-21T04:47:53.8766778Z             {
2026-06-21T04:47:53.8766931Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T04:47:53.8767040Z               "line": 101
2026-06-21T04:47:53.8767146Z             },
2026-06-21T04:47:53.8767255Z             {
2026-06-21T04:47:53.8767407Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T04:47:53.8767532Z               "line": 30
2026-06-21T04:47:53.8767627Z             },
2026-06-21T04:47:53.8767741Z             {
2026-06-21T04:47:53.8767889Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T04:47:53.8767994Z               "line": 48
2026-06-21T04:47:53.8768100Z             }
2026-06-21T04:47:53.8768204Z           ]
2026-06-21T04:47:53.8768313Z         },
2026-06-21T04:47:53.8768415Z         "int": {
2026-06-21T04:47:53.8768542Z           "complete": false,
2026-06-21T04:47:53.8768643Z           "evidence": []
2026-06-21T04:47:53.8768754Z         },
2026-06-21T04:47:53.8768871Z         "unit": {
2026-06-21T04:47:53.8769066Z           "complete": true,
2026-06-21T04:47:53.8769183Z           "evidence": [
2026-06-21T04:47:53.8769282Z             {
2026-06-21T04:47:53.8769460Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T04:47:53.8769583Z               "line": 162
2026-06-21T04:47:53.8769688Z             }
2026-06-21T04:47:53.8769807Z           ]
2026-06-21T04:47:53.8769907Z         }
2026-06-21T04:47:53.8770008Z       }
2026-06-21T04:47:53.8770113Z     },
2026-06-21T04:47:53.8770222Z     {
2026-06-21T04:47:53.8770352Z       "id": "REQ-HAZARD-REGISTRY-DIR-CREATE",
2026-06-21T04:47:53.8770780Z       "title": "SQLite store opens create their parent dir themselves — a fresh-home registry op must not SQLITE_CANTOPEN (4.9)",
2026-06-21T04:47:53.8771029Z       "requiredStages": [
2026-06-21T04:47:53.8771132Z         "doc",
2026-06-21T04:47:53.8771243Z         "impl",
2026-06-21T04:47:53.8771349Z         "unit"
2026-06-21T04:47:53.8771452Z       ],
2026-06-21T04:47:53.8771556Z       "stages": {
2026-06-21T04:47:53.8771666Z         "doc": {
2026-06-21T04:47:53.8771783Z           "complete": true,
2026-06-21T04:47:53.8771896Z           "evidence": [
2026-06-21T04:47:53.8771993Z             {
2026-06-21T04:47:53.8772130Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T04:47:53.8772235Z               "line": 151
2026-06-21T04:47:53.8772341Z             }
2026-06-21T04:47:53.8772580Z           ]
2026-06-21T04:47:53.8772689Z         },
2026-06-21T04:47:53.8772793Z         "impl": {
2026-06-21T04:47:53.8772913Z           "complete": true,
2026-06-21T04:47:53.8773022Z           "evidence": [
2026-06-21T04:47:53.8773132Z             {
2026-06-21T04:47:53.8773290Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T04:47:53.8773404Z               "line": 22
2026-06-21T04:47:53.8773509Z             }
2026-06-21T04:47:53.8773615Z           ]
2026-06-21T04:47:53.8773719Z         },
2026-06-21T04:47:53.8773824Z         "int": {
2026-06-21T04:47:53.8773944Z           "complete": false,
2026-06-21T04:47:53.8774048Z           "evidence": []
2026-06-21T04:47:53.8774154Z         },
2026-06-21T04:47:53.8774263Z         "unit": {
2026-06-21T04:47:53.8774376Z           "complete": true,
2026-06-21T04:47:53.8774481Z           "evidence": [
2026-06-21T04:47:53.8774586Z             {
2026-06-21T04:47:53.8774733Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T04:47:53.8774853Z               "line": 298
2026-06-21T04:47:53.8774958Z             }
2026-06-21T04:47:53.8775067Z           ]
2026-06-21T04:47:53.8775168Z         }
2026-06-21T04:47:53.8775263Z       }
2026-06-21T04:47:53.8775362Z     },
2026-06-21T04:47:53.8775473Z     {
2026-06-21T04:47:53.8775620Z       "id": "REQ-HAZARD-REGISTRY-EPOCH-LEASE",
2026-06-21T04:47:53.8776112Z       "title": "Registry merge ordered by per-node monotonic epoch, never wall-clock — a stale Active can't clobber a newer Offline (4.8, red-team #8)",
2026-06-21T04:47:53.8776239Z       "requiredStages": [
2026-06-21T04:47:53.8776350Z         "impl",
2026-06-21T04:47:53.8776456Z         "unit"
2026-06-21T04:47:53.8776564Z       ],
2026-06-21T04:47:53.8776673Z       "stages": {
2026-06-21T04:47:53.8776783Z         "doc": {
2026-06-21T04:47:53.8776899Z           "complete": true,
2026-06-21T04:47:53.8777018Z           "evidence": [
2026-06-21T04:47:53.8777124Z             {
2026-06-21T04:47:53.8777262Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T04:47:53.8777386Z               "line": 145
2026-06-21T04:47:53.8777482Z             }
2026-06-21T04:47:53.8777586Z           ]
2026-06-21T04:47:53.8777686Z         },
2026-06-21T04:47:53.8777787Z         "impl": {
2026-06-21T04:47:53.8777896Z           "complete": true,
2026-06-21T04:47:53.8778001Z           "evidence": [
2026-06-21T04:47:53.8778116Z             {
2026-06-21T04:47:53.8778287Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T04:47:53.8778392Z               "line": 160
2026-06-21T04:47:53.8778502Z             },
2026-06-21T04:47:53.8778601Z             {
2026-06-21T04:47:53.8778764Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.8778873Z               "line": 200
2026-06-21T04:47:53.8779046Z             },
2026-06-21T04:47:53.8779150Z             {
2026-06-21T04:47:53.8779299Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.8779403Z               "line": 298
2026-06-21T04:47:53.8779511Z             },
2026-06-21T04:47:53.8779616Z             {
2026-06-21T04:47:53.8779767Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T04:47:53.8779871Z               "line": 20
2026-06-21T04:47:53.8779977Z             }
2026-06-21T04:47:53.8780082Z           ]
2026-06-21T04:47:53.8780185Z         },
2026-06-21T04:47:53.8780392Z         "int": {
2026-06-21T04:47:53.8780510Z           "complete": false,
2026-06-21T04:47:53.8780630Z           "evidence": []
2026-06-21T04:47:53.8780730Z         },
2026-06-21T04:47:53.8780834Z         "unit": {
2026-06-21T04:47:53.8780945Z           "complete": true,
2026-06-21T04:47:53.8781054Z           "evidence": [
2026-06-21T04:47:53.8781159Z             {
2026-06-21T04:47:53.8781321Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.8781440Z               "line": 937
2026-06-21T04:47:53.8781542Z             },
2026-06-21T04:47:53.8781650Z             {
2026-06-21T04:47:53.8781808Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-21T04:47:53.8782022Z               "line": 88
2026-06-21T04:47:53.8782130Z             },
2026-06-21T04:47:53.8782230Z             {
2026-06-21T04:47:53.8782385Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.8782496Z               "line": 851
2026-06-21T04:47:53.8782606Z             },
2026-06-21T04:47:53.8782714Z             {
2026-06-21T04:47:53.8782868Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.8782978Z               "line": 870
2026-06-21T04:47:53.8783087Z             },
2026-06-21T04:47:53.8783192Z             {
2026-06-21T04:47:53.8783349Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T04:47:53.8783469Z               "line": 279
2026-06-21T04:47:53.8783564Z             },
2026-06-21T04:47:53.8783663Z             {
2026-06-21T04:47:53.8783817Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T04:47:53.8783926Z               "line": 82
2026-06-21T04:47:53.8784040Z             },
2026-06-21T04:47:53.8784146Z             {
2026-06-21T04:47:53.8784293Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T04:47:53.8784409Z               "line": 99
2026-06-21T04:47:53.8784518Z             },
2026-06-21T04:47:53.8784622Z             {
2026-06-21T04:47:53.8784757Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T04:47:53.8784875Z               "line": 119
2026-06-21T04:47:53.8784974Z             }
2026-06-21T04:47:53.8785084Z           ]
2026-06-21T04:47:53.8785194Z         }
2026-06-21T04:47:53.8785293Z       }
2026-06-21T04:47:53.8785403Z     },
2026-06-21T04:47:53.8785499Z     {
2026-06-21T04:47:53.8785651Z       "id": "REQ-HAZARD-REGISTRY-GHOST-ROWS",
2026-06-21T04:47:53.8787049Z       "title": "A dead node identity's registry rows must decay: only the per-(endpoint,node) epoch lease supersedes rows, so without eviction a vanished node's rows are immortal and poison bare-id resolution with phantom AcrossNodes ambiguity — evict rows whose author node has not been heard (admitted inbound feed) within the eviction window; own rows never decay; a revived node re-inserts from its durable epoch within one pump cadence (4.10)",
2026-06-21T04:47:53.8787186Z       "requiredStages": [
2026-06-21T04:47:53.8787295Z         "doc",
2026-06-21T04:47:53.8787404Z         "impl",
2026-06-21T04:47:53.8787522Z         "unit"
2026-06-21T04:47:53.8787631Z       ],
2026-06-21T04:47:53.8787742Z       "stages": {
2026-06-21T04:47:53.8787855Z         "doc": {
2026-06-21T04:47:53.8787970Z           "complete": true,
2026-06-21T04:47:53.8788085Z           "evidence": [
2026-06-21T04:47:53.8788184Z             {
2026-06-21T04:47:53.8788318Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T04:47:53.8788427Z               "line": 157
2026-06-21T04:47:53.8788532Z             }
2026-06-21T04:47:53.8788638Z           ]
2026-06-21T04:47:53.8788742Z         },
2026-06-21T04:47:53.8788852Z         "impl": {
2026-06-21T04:47:53.8789038Z           "complete": true,
2026-06-21T04:47:53.8789176Z           "evidence": [
2026-06-21T04:47:53.8789286Z             {
2026-06-21T04:47:53.8789457Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T04:47:53.8789578Z               "line": 137
2026-06-21T04:47:53.8789686Z             },
2026-06-21T04:47:53.8789791Z             {
2026-06-21T04:47:53.8790053Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.8790171Z               "line": 564
2026-06-21T04:47:53.8790285Z             },
2026-06-21T04:47:53.8790384Z             {
2026-06-21T04:47:53.8790537Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.8790642Z               "line": 571
2026-06-21T04:47:53.8790750Z             },
2026-06-21T04:47:53.8790857Z             {
2026-06-21T04:47:53.8791013Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.8791133Z               "line": 227
2026-06-21T04:47:53.8791243Z             }
2026-06-21T04:47:53.8791347Z           ]
2026-06-21T04:47:53.8791548Z         },
2026-06-21T04:47:53.8791652Z         "int": {
2026-06-21T04:47:53.8791762Z           "complete": false,
2026-06-21T04:47:53.8791886Z           "evidence": []
2026-06-21T04:47:53.8791996Z         },
2026-06-21T04:47:53.8792102Z         "unit": {
2026-06-21T04:47:53.8792215Z           "complete": true,
2026-06-21T04:47:53.8792334Z           "evidence": [
2026-06-21T04:47:53.8792445Z             {
2026-06-21T04:47:53.8792601Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.8792719Z               "line": 1622
2026-06-21T04:47:53.8792828Z             },
2026-06-21T04:47:53.8792922Z             {
2026-06-21T04:47:53.8793085Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.8793199Z               "line": 1680
2026-06-21T04:47:53.8793298Z             },
2026-06-21T04:47:53.8793390Z             {
2026-06-21T04:47:53.8793542Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.8793666Z               "line": 883
2026-06-21T04:47:53.8793771Z             }
2026-06-21T04:47:53.8793885Z           ]
2026-06-21T04:47:53.8793985Z         }
2026-06-21T04:47:53.8794095Z       }
2026-06-21T04:47:53.8794200Z     },
2026-06-21T04:47:53.8794305Z     {
2026-06-21T04:47:53.8794453Z       "id": "REQ-HAZARD-REGISTRY-STALE-CLEAN",
2026-06-21T04:47:53.8794678Z       "title": "Stale registry entries degrade to fallback, never hard-fail (4.3)",
2026-06-21T04:47:53.8794791Z       "requiredStages": [
2026-06-21T04:47:53.8794896Z         "impl",
2026-06-21T04:47:53.8795002Z         "unit"
2026-06-21T04:47:53.8795110Z       ],
2026-06-21T04:47:53.8795225Z       "stages": {
2026-06-21T04:47:53.8795341Z         "doc": {
2026-06-21T04:47:53.8795458Z           "complete": false,
2026-06-21T04:47:53.8795581Z           "evidence": []
2026-06-21T04:47:53.8795683Z         },
2026-06-21T04:47:53.8795792Z         "impl": {
2026-06-21T04:47:53.8795910Z           "complete": true,
2026-06-21T04:47:53.8796035Z           "evidence": [
2026-06-21T04:47:53.8796148Z             {
2026-06-21T04:47:53.8796298Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T04:47:53.8796422Z               "line": 15
2026-06-21T04:47:53.8796526Z             },
2026-06-21T04:47:53.8796627Z             {
2026-06-21T04:47:53.8796774Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T04:47:53.8796894Z               "line": 55
2026-06-21T04:47:53.8797008Z             },
2026-06-21T04:47:53.8797112Z             {
2026-06-21T04:47:53.8797266Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T04:47:53.8797374Z               "line": 66
2026-06-21T04:47:53.8797485Z             },
2026-06-21T04:47:53.8797576Z             {
2026-06-21T04:47:53.8797726Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T04:47:53.8797851Z               "line": 115
2026-06-21T04:47:53.8797955Z             },
2026-06-21T04:47:53.8798067Z             {
2026-06-21T04:47:53.8798211Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T04:47:53.8798330Z               "line": 138
2026-06-21T04:47:53.8798434Z             }
2026-06-21T04:47:53.8798540Z           ]
2026-06-21T04:47:53.8798650Z         },
2026-06-21T04:47:53.8798758Z         "int": {
2026-06-21T04:47:53.8798884Z           "complete": false,
2026-06-21T04:47:53.8799073Z           "evidence": []
2026-06-21T04:47:53.8799284Z         },
2026-06-21T04:47:53.8799402Z         "unit": {
2026-06-21T04:47:53.8799523Z           "complete": true,
2026-06-21T04:47:53.8799632Z           "evidence": [
2026-06-21T04:47:53.8799736Z             {
2026-06-21T04:47:53.8799875Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T04:47:53.8799984Z               "line": 363
2026-06-21T04:47:53.8800090Z             },
2026-06-21T04:47:53.8800194Z             {
2026-06-21T04:47:53.8800342Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T04:47:53.8800448Z               "line": 369
2026-06-21T04:47:53.8800556Z             },
2026-06-21T04:47:53.8800765Z             {
2026-06-21T04:47:53.8800911Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T04:47:53.8801020Z               "line": 383
2026-06-21T04:47:53.8801131Z             },
2026-06-21T04:47:53.8801225Z             {
2026-06-21T04:47:53.8801369Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T04:47:53.8801483Z               "line": 392
2026-06-21T04:47:53.8801583Z             },
2026-06-21T04:47:53.8801683Z             {
2026-06-21T04:47:53.8801841Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T04:47:53.8801950Z               "line": 195
2026-06-21T04:47:53.8802056Z             },
2026-06-21T04:47:53.8802165Z             {
2026-06-21T04:47:53.8802308Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T04:47:53.8802423Z               "line": 208
2026-06-21T04:47:53.8802517Z             },
2026-06-21T04:47:53.8802613Z             {
2026-06-21T04:47:53.8802761Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T04:47:53.8802875Z               "line": 271
2026-06-21T04:47:53.8802986Z             },
2026-06-21T04:47:53.8803081Z             {
2026-06-21T04:47:53.8803231Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T04:47:53.8803342Z               "line": 290
2026-06-21T04:47:53.8803449Z             },
2026-06-21T04:47:53.8803563Z             {
2026-06-21T04:47:53.8803707Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T04:47:53.8803816Z               "line": 319
2026-06-21T04:47:53.8803916Z             }
2026-06-21T04:47:53.8804017Z           ]
2026-06-21T04:47:53.8804121Z         }
2026-06-21T04:47:53.8804231Z       }
2026-06-21T04:47:53.8804346Z     },
2026-06-21T04:47:53.8804450Z     {
2026-06-21T04:47:53.8804608Z       "id": "REQ-HAZARD-RESTART-IDEMPOTENT",
2026-06-21T04:47:53.8804942Z       "title": "Idempotent/exactly-once delivery across brain restart at every broker boundary (codex #14)",
2026-06-21T04:47:53.8805056Z       "requiredStages": [
2026-06-21T04:47:53.8805175Z         "impl",
2026-06-21T04:47:53.8805295Z         "unit",
2026-06-21T04:47:53.8805404Z         "int"
2026-06-21T04:47:53.8805509Z       ],
2026-06-21T04:47:53.8805619Z       "stages": {
2026-06-21T04:47:53.8809711Z         "doc": {
2026-06-21T04:47:53.8809877Z           "complete": false,
2026-06-21T04:47:53.8809991Z           "evidence": []
2026-06-21T04:47:53.8810111Z         },
2026-06-21T04:47:53.8810220Z         "impl": {
2026-06-21T04:47:53.8810336Z           "complete": true,
2026-06-21T04:47:53.8810458Z           "evidence": [
2026-06-21T04:47:53.8810563Z             {
2026-06-21T04:47:53.8810727Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T04:47:53.8810835Z               "line": 474
2026-06-21T04:47:53.8810936Z             },
2026-06-21T04:47:53.8811047Z             {
2026-06-21T04:47:53.8811197Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T04:47:53.8811311Z               "line": 916
2026-06-21T04:47:53.8811415Z             },
2026-06-21T04:47:53.8811528Z             {
2026-06-21T04:47:53.8811672Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T04:47:53.8811785Z               "line": 961
2026-06-21T04:47:53.8811899Z             },
2026-06-21T04:47:53.8812005Z             {
2026-06-21T04:47:53.8812152Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T04:47:53.8812397Z               "line": 986
2026-06-21T04:47:53.8812496Z             },
2026-06-21T04:47:53.8812597Z             {
2026-06-21T04:47:53.8812744Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.8812858Z               "line": 1626
2026-06-21T04:47:53.8812960Z             },
2026-06-21T04:47:53.8813073Z             {
2026-06-21T04:47:53.8813217Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.8813330Z               "line": 1871
2026-06-21T04:47:53.8813435Z             },
2026-06-21T04:47:53.8813541Z             {
2026-06-21T04:47:53.8813687Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.8813921Z               "line": 2002
2026-06-21T04:47:53.8814033Z             },
2026-06-21T04:47:53.8814137Z             {
2026-06-21T04:47:53.8814287Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.8814390Z               "line": 2050
2026-06-21T04:47:53.8814495Z             },
2026-06-21T04:47:53.8814605Z             {
2026-06-21T04:47:53.8814743Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T04:47:53.8814854Z               "line": 46
2026-06-21T04:47:53.8814954Z             },
2026-06-21T04:47:53.8815067Z             {
2026-06-21T04:47:53.8815215Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T04:47:53.8815325Z               "line": 200
2026-06-21T04:47:53.8815435Z             },
2026-06-21T04:47:53.8815535Z             {
2026-06-21T04:47:53.8815692Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T04:47:53.8815803Z               "line": 132
2026-06-21T04:47:53.8815916Z             },
2026-06-21T04:47:53.8816030Z             {
2026-06-21T04:47:53.8816174Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T04:47:53.8816293Z               "line": 137
2026-06-21T04:47:53.8816399Z             },
2026-06-21T04:47:53.8816508Z             {
2026-06-21T04:47:53.8816649Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T04:47:53.8816769Z               "line": 183
2026-06-21T04:47:53.8816879Z             }
2026-06-21T04:47:53.8816983Z           ]
2026-06-21T04:47:53.8817093Z         },
2026-06-21T04:47:53.8817189Z         "int": {
2026-06-21T04:47:53.8817307Z           "complete": true,
2026-06-21T04:47:53.8817413Z           "evidence": [
2026-06-21T04:47:53.8817518Z             {
2026-06-21T04:47:53.8817689Z               "path": "crates/spt-daemon/tests/idempotent.rs",
2026-06-21T04:47:53.8817799Z               "line": 27
2026-06-21T04:47:53.8817913Z             },
2026-06-21T04:47:53.8818019Z             {
2026-06-21T04:47:53.8818185Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T04:47:53.8818309Z               "line": 148
2026-06-21T04:47:53.8818419Z             },
2026-06-21T04:47:53.8818518Z             {
2026-06-21T04:47:53.8818668Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-21T04:47:53.8818785Z               "line": 200
2026-06-21T04:47:53.8818880Z             }
2026-06-21T04:47:53.8819075Z           ]
2026-06-21T04:47:53.8819173Z         },
2026-06-21T04:47:53.8819283Z         "unit": {
2026-06-21T04:47:53.8819403Z           "complete": true,
2026-06-21T04:47:53.8819516Z           "evidence": [
2026-06-21T04:47:53.8819627Z             {
2026-06-21T04:47:53.8819774Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T04:47:53.8819883Z               "line": 366
2026-06-21T04:47:53.8819990Z             },
2026-06-21T04:47:53.8820099Z             {
2026-06-21T04:47:53.8820257Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T04:47:53.8820357Z               "line": 398
2026-06-21T04:47:53.8820461Z             },
2026-06-21T04:47:53.8820566Z             {
2026-06-21T04:47:53.8820713Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T04:47:53.8820818Z               "line": 419
2026-06-21T04:47:53.8820934Z             },
2026-06-21T04:47:53.8821047Z             {
2026-06-21T04:47:53.8821211Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T04:47:53.8821438Z               "line": 628
2026-06-21T04:47:53.8821545Z             },
2026-06-21T04:47:53.8821649Z             {
2026-06-21T04:47:53.8821790Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T04:47:53.8821909Z               "line": 289
2026-06-21T04:47:53.8822012Z             },
2026-06-21T04:47:53.8822117Z             {
2026-06-21T04:47:53.8822256Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T04:47:53.8822364Z               "line": 230
2026-06-21T04:47:53.8822474Z             },
2026-06-21T04:47:53.8822575Z             {
2026-06-21T04:47:53.8822717Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T04:47:53.8822932Z               "line": 526
2026-06-21T04:47:53.8823041Z             },
2026-06-21T04:47:53.8823157Z             {
2026-06-21T04:47:53.8823295Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T04:47:53.8823400Z               "line": 556
2026-06-21T04:47:53.8823506Z             }
2026-06-21T04:47:53.8823609Z           ]
2026-06-21T04:47:53.8823714Z         }
2026-06-21T04:47:53.8823820Z       }
2026-06-21T04:47:53.8823928Z     },
2026-06-21T04:47:53.8824029Z     {
2026-06-21T04:47:53.8824187Z       "id": "REQ-HAZARD-ROLLBACK-STATE-COMPAT",
2026-06-21T04:47:53.8826044Z       "title": "A brain must not irreversibly migrate durable state before update ready-promotion: the readiness-gated auto-rollback (ADR-0018 Q7) spawns the N-1 binary against durable state the new brain may have written, so every pre-ready write must stay N-1-readable (schema migrations gated behind ready-promotion, or written N-1-tolerant/additive). Else the first in-place schema migration silently bricks rollback (KNOWN-HAZARDS 6.8). Free now — a 2026-06-09 audit confirmed zero state-migration code exists; unmintable retroactively once a migration ships.",
2026-06-21T04:47:53.8826176Z       "requiredStages": [
2026-06-21T04:47:53.8826281Z         "doc",
2026-06-21T04:47:53.8826382Z         "impl",
2026-06-21T04:47:53.8826495Z         "unit"
2026-06-21T04:47:53.8826600Z       ],
2026-06-21T04:47:53.8826711Z       "stages": {
2026-06-21T04:47:53.8826829Z         "doc": {
2026-06-21T04:47:53.8826945Z           "complete": true,
2026-06-21T04:47:53.8827068Z           "evidence": [
2026-06-21T04:47:53.8827172Z             {
2026-06-21T04:47:53.8827310Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T04:47:53.8827416Z               "line": 314
2026-06-21T04:47:53.8827520Z             }
2026-06-21T04:47:53.8827620Z           ]
2026-06-21T04:47:53.8827720Z         },
2026-06-21T04:47:53.8827825Z         "impl": {
2026-06-21T04:47:53.8827940Z           "complete": true,
2026-06-21T04:47:53.8828073Z           "evidence": [
2026-06-21T04:47:53.8828187Z             {
2026-06-21T04:47:53.8828364Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T04:47:53.8828483Z               "line": 33
2026-06-21T04:47:53.8828584Z             },
2026-06-21T04:47:53.8828688Z             {
2026-06-21T04:47:53.8828850Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T04:47:53.8829036Z               "line": 39
2026-06-21T04:47:53.8829141Z             }
2026-06-21T04:47:53.8829238Z           ]
2026-06-21T04:47:53.8829345Z         },
2026-06-21T04:47:53.8829450Z         "int": {
2026-06-21T04:47:53.8829569Z           "complete": false,
2026-06-21T04:47:53.8829677Z           "evidence": []
2026-06-21T04:47:53.8829785Z         },
2026-06-21T04:47:53.8829900Z         "unit": {
2026-06-21T04:47:53.8830015Z           "complete": true,
2026-06-21T04:47:53.8830129Z           "evidence": [
2026-06-21T04:47:53.8830230Z             {
2026-06-21T04:47:53.8830396Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T04:47:53.8830497Z               "line": 95
2026-06-21T04:47:53.8830611Z             }
2026-06-21T04:47:53.8830720Z           ]
2026-06-21T04:47:53.8830822Z         }
2026-06-21T04:47:53.8830931Z       }
2026-06-21T04:47:53.8831030Z     },
2026-06-21T04:47:53.8831236Z     {
2026-06-21T04:47:53.8831364Z       "id": "REQ-HAZARD-ROSTER-GHOST",
2026-06-21T04:47:53.8833940Z       "title": "A LOCAL subnet roster entry whose backing perch is erased does NOT keep advertising Active (no phantom perch-less endpoint). `api session-end <id> --erase` removes the perch (owlery dir gone) but the subnet roster (identity/registry/<subnet>.json) keeps the endpoint's instance row ACTIVE with no backing perch; `endpoint stop` says 'address unregistered' yet the line persists; no CLI verb forgets a roster entry, and a hand-edit is re-added by the single-writer daemon advertiser. FIX: daemon-side self-heal — the advertiser DROPS/forgets a LOCAL roster entry whose backing perch no longer exists (stops advertising it Active), and/or a `forget`/evict verb; verify whether the epoch lease eventually evicts it (slow-self-heal) vs a real leak and scope accordingly. doyle secondary finding (perri). (post-v0.10.0)",
2026-06-21T04:47:53.8834193Z       "requiredStages": [
2026-06-21T04:47:53.8834328Z         "impl",
2026-06-21T04:47:53.8834423Z         "unit"
2026-06-21T04:47:53.8834532Z       ],
2026-06-21T04:47:53.8834643Z       "stages": {
2026-06-21T04:47:53.8834752Z         "doc": {
2026-06-21T04:47:53.8834855Z           "complete": false,
2026-06-21T04:47:53.8834970Z           "evidence": []
2026-06-21T04:47:53.8835074Z         },
2026-06-21T04:47:53.8835177Z         "impl": {
2026-06-21T04:47:53.8835301Z           "complete": true,
2026-06-21T04:47:53.8835407Z           "evidence": [
2026-06-21T04:47:53.8835520Z             {
2026-06-21T04:47:53.8835683Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.8835783Z               "line": 488
2026-06-21T04:47:53.8835901Z             }
2026-06-21T04:47:53.8836003Z           ]
2026-06-21T04:47:53.8836102Z         },
2026-06-21T04:47:53.8836211Z         "int": {
2026-06-21T04:47:53.8836332Z           "complete": false,
2026-06-21T04:47:53.8836436Z           "evidence": []
2026-06-21T04:47:53.8836545Z         },
2026-06-21T04:47:53.8836660Z         "unit": {
2026-06-21T04:47:53.8836783Z           "complete": true,
2026-06-21T04:47:53.8836909Z           "evidence": [
2026-06-21T04:47:53.8837022Z             {
2026-06-21T04:47:53.8837195Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.8837314Z               "line": 1466
2026-06-21T04:47:53.8837423Z             }
2026-06-21T04:47:53.8837529Z           ]
2026-06-21T04:47:53.8837633Z         }
2026-06-21T04:47:53.8837737Z       }
2026-06-21T04:47:53.8837837Z     },
2026-06-21T04:47:53.8837933Z     {
2026-06-21T04:47:53.8838056Z       "id": "REQ-HAZARD-SELF-ELEVATE",
2026-06-21T04:47:53.8840408Z       "title": "Self-elevation (REQ-ELEVATE-1) re-runs the EXACT original invocation with the binary's ABSOLUTE exe path — never widening privilege scope, never adding/altering args, never via a PATH-resolved bare name, never via a shell-interpolated command string (argv-array only, no `sh -c`); the elevated child drops state back to the user (composes with the 5.7 de-elevation) and NEVER re-elevates (loop-safe: decide_elevation_path returns AlreadyElevated whenever the process is already Elevated, on every OS). The user's UAC/polkit/sudo prompt is the only consent gate — we never bypass it; the print-hint floor prints the absolute-path command too. The unprivileged parent never depends on (pipes/captures) the privileged child's stdout.",
2026-06-21T04:47:53.8840547Z       "requiredStages": [
2026-06-21T04:47:53.8840646Z         "unit"
2026-06-21T04:47:53.8840757Z       ],
2026-06-21T04:47:53.8840866Z       "stages": {
2026-06-21T04:47:53.8840966Z         "doc": {
2026-06-21T04:47:53.8841077Z           "complete": false,
2026-06-21T04:47:53.8841205Z           "evidence": []
2026-06-21T04:47:53.8841313Z         },
2026-06-21T04:47:53.8841420Z         "impl": {
2026-06-21T04:47:53.8841543Z           "complete": true,
2026-06-21T04:47:53.8841653Z           "evidence": [
2026-06-21T04:47:53.8841744Z             {
2026-06-21T04:47:53.8841881Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.8842115Z               "line": 3520
2026-06-21T04:47:53.8842220Z             },
2026-06-21T04:47:53.8842326Z             {
2026-06-21T04:47:53.8842458Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.8842559Z               "line": 3572
2026-06-21T04:47:53.8842665Z             },
2026-06-21T04:47:53.8842769Z             {
2026-06-21T04:47:53.8842896Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.8843006Z               "line": 3617
2026-06-21T04:47:53.8843109Z             },
2026-06-21T04:47:53.8843217Z             {
2026-06-21T04:47:53.8843362Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T04:47:53.8843571Z               "line": 92
2026-06-21T04:47:53.8843681Z             },
2026-06-21T04:47:53.8843781Z             {
2026-06-21T04:47:53.8843929Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T04:47:53.8844039Z               "line": 148
2026-06-21T04:47:53.8844133Z             },
2026-06-21T04:47:53.8844248Z             {
2026-06-21T04:47:53.8844377Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T04:47:53.8844525Z               "line": 192
2026-06-21T04:47:53.8844664Z             },
2026-06-21T04:47:53.8844763Z             {
2026-06-21T04:47:53.8844903Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T04:47:53.8845007Z               "line": 200
2026-06-21T04:47:53.8845116Z             },
2026-06-21T04:47:53.8845217Z             {
2026-06-21T04:47:53.8845359Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T04:47:53.8845458Z               "line": 211
2026-06-21T04:47:53.8845563Z             },
2026-06-21T04:47:53.8845667Z             {
2026-06-21T04:47:53.8845804Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T04:47:53.8845909Z               "line": 265
2026-06-21T04:47:53.8846014Z             },
2026-06-21T04:47:53.8846128Z             {
2026-06-21T04:47:53.8846267Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T04:47:53.8846385Z               "line": 279
2026-06-21T04:47:53.8846491Z             }
2026-06-21T04:47:53.8846596Z           ]
2026-06-21T04:47:53.8846700Z         },
2026-06-21T04:47:53.8846811Z         "int": {
2026-06-21T04:47:53.8846929Z           "complete": false,
2026-06-21T04:47:53.8847033Z           "evidence": []
2026-06-21T04:47:53.8847135Z         },
2026-06-21T04:47:53.8847244Z         "unit": {
2026-06-21T04:47:53.8847363Z           "complete": true,
2026-06-21T04:47:53.8847474Z           "evidence": [
2026-06-21T04:47:53.8847578Z             {
2026-06-21T04:47:53.8847711Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T04:47:53.8847832Z               "line": 419
2026-06-21T04:47:53.8847930Z             },
2026-06-21T04:47:53.8848041Z             {
2026-06-21T04:47:53.8848170Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T04:47:53.8848287Z               "line": 470
2026-06-21T04:47:53.8848392Z             },
2026-06-21T04:47:53.8848502Z             {
2026-06-21T04:47:53.8848640Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T04:47:53.8848750Z               "line": 499
2026-06-21T04:47:53.8848860Z             },
2026-06-21T04:47:53.8849036Z             {
2026-06-21T04:47:53.8849174Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T04:47:53.8849274Z               "line": 526
2026-06-21T04:47:53.8849389Z             }
2026-06-21T04:47:53.8849498Z           ]
2026-06-21T04:47:53.8849617Z         }
2026-06-21T04:47:53.8849714Z       }
2026-06-21T04:47:53.8849813Z     },
2026-06-21T04:47:53.8849913Z     {
2026-06-21T04:47:53.8850053Z       "id": "REQ-HAZARD-SINGLE-PATH-SOURCE",
2026-06-21T04:47:53.8850276Z       "title": "Single path/registry source of truth; no layout ambiguity (6.1)",
2026-06-21T04:47:53.8850387Z       "requiredStages": [
2026-06-21T04:47:53.8850494Z         "impl",
2026-06-21T04:47:53.8850598Z         "unit"
2026-06-21T04:47:53.8850699Z       ],
2026-06-21T04:47:53.8850806Z       "stages": {
2026-06-21T04:47:53.8851035Z         "doc": {
2026-06-21T04:47:53.8851159Z           "complete": false,
2026-06-21T04:47:53.8851274Z           "evidence": []
2026-06-21T04:47:53.8851379Z         },
2026-06-21T04:47:53.8851483Z         "impl": {
2026-06-21T04:47:53.8851593Z           "complete": true,
2026-06-21T04:47:53.8851708Z           "evidence": [
2026-06-21T04:47:53.8851807Z             {
2026-06-21T04:47:53.8851976Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T04:47:53.8852080Z               "line": 62
2026-06-21T04:47:53.8852189Z             },
2026-06-21T04:47:53.8852295Z             {
2026-06-21T04:47:53.8852456Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T04:47:53.8852666Z               "line": 71
2026-06-21T04:47:53.8852771Z             },
2026-06-21T04:47:53.8852881Z             {
2026-06-21T04:47:53.8853032Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T04:47:53.8853143Z               "line": 80
2026-06-21T04:47:53.8853249Z             },
2026-06-21T04:47:53.8853352Z             {
2026-06-21T04:47:53.8853513Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T04:47:53.8853618Z               "line": 88
2026-06-21T04:47:53.8853716Z             },
2026-06-21T04:47:53.8853821Z             {
2026-06-21T04:47:53.8853974Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:53.8854097Z               "line": 33
2026-06-21T04:47:53.8854199Z             },
2026-06-21T04:47:53.8854303Z             {
2026-06-21T04:47:53.8854440Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:53.8854546Z               "line": 65
2026-06-21T04:47:53.8854651Z             },
2026-06-21T04:47:53.8854765Z             {
2026-06-21T04:47:53.8854913Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:53.8855013Z               "line": 74
2026-06-21T04:47:53.8855133Z             },
2026-06-21T04:47:53.8855233Z             {
2026-06-21T04:47:53.8855380Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:53.8855486Z               "line": 93
2026-06-21T04:47:53.8855604Z             },
2026-06-21T04:47:53.8855699Z             {
2026-06-21T04:47:53.8855844Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:53.8855961Z               "line": 102
2026-06-21T04:47:53.8856070Z             },
2026-06-21T04:47:53.8856175Z             {
2026-06-21T04:47:53.8856316Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:53.8856431Z               "line": 111
2026-06-21T04:47:53.8856546Z             },
2026-06-21T04:47:53.8856654Z             {
2026-06-21T04:47:53.8856804Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:53.8856917Z               "line": 122
2026-06-21T04:47:53.8857027Z             },
2026-06-21T04:47:53.8857123Z             {
2026-06-21T04:47:53.8857251Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:53.8857366Z               "line": 140
2026-06-21T04:47:53.8857471Z             },
2026-06-21T04:47:53.8857580Z             {
2026-06-21T04:47:53.8857714Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:53.8857828Z               "line": 149
2026-06-21T04:47:53.8857932Z             },
2026-06-21T04:47:53.8858025Z             {
2026-06-21T04:47:53.8858171Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:53.8858286Z               "line": 158
2026-06-21T04:47:53.8858406Z             },
2026-06-21T04:47:53.8858509Z             {
2026-06-21T04:47:53.8858654Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:53.8858763Z               "line": 169
2026-06-21T04:47:53.8858866Z             },
2026-06-21T04:47:53.8859058Z             {
2026-06-21T04:47:53.8859200Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:53.8859315Z               "line": 177
2026-06-21T04:47:53.8859420Z             },
2026-06-21T04:47:53.8859529Z             {
2026-06-21T04:47:53.8859673Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:53.8859882Z               "line": 186
2026-06-21T04:47:53.8859988Z             },
2026-06-21T04:47:53.8860087Z             {
2026-06-21T04:47:53.8860230Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:53.8860341Z               "line": 195
2026-06-21T04:47:53.8860445Z             },
2026-06-21T04:47:53.8860555Z             {
2026-06-21T04:47:53.8860693Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:53.8860797Z               "line": 204
2026-06-21T04:47:53.8860903Z             },
2026-06-21T04:47:53.8861012Z             {
2026-06-21T04:47:53.8861154Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:53.8861366Z               "line": 216
2026-06-21T04:47:53.8861475Z             },
2026-06-21T04:47:53.8861576Z             {
2026-06-21T04:47:53.8861724Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:53.8861838Z               "line": 223
2026-06-21T04:47:53.8861944Z             },
2026-06-21T04:47:53.8862048Z             {
2026-06-21T04:47:53.8862202Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:53.8862316Z               "line": 232
2026-06-21T04:47:53.8862420Z             },
2026-06-21T04:47:53.8862526Z             {
2026-06-21T04:47:53.8862682Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:53.8862792Z               "line": 239
2026-06-21T04:47:53.8862893Z             },
2026-06-21T04:47:53.8863002Z             {
2026-06-21T04:47:53.8863146Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:53.8863264Z               "line": 306
2026-06-21T04:47:53.8863374Z             },
2026-06-21T04:47:53.8863480Z             {
2026-06-21T04:47:53.8863631Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:53.8863752Z               "line": 318
2026-06-21T04:47:53.8863851Z             },
2026-06-21T04:47:53.8863959Z             {
2026-06-21T04:47:53.8864097Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:53.8864215Z               "line": 405
2026-06-21T04:47:53.8864319Z             }
2026-06-21T04:47:53.8864434Z           ]
2026-06-21T04:47:53.8864530Z         },
2026-06-21T04:47:53.8864639Z         "int": {
2026-06-21T04:47:53.8864769Z           "complete": false,
2026-06-21T04:47:53.8864882Z           "evidence": []
2026-06-21T04:47:53.8864991Z         },
2026-06-21T04:47:53.8865102Z         "unit": {
2026-06-21T04:47:53.8865225Z           "complete": true,
2026-06-21T04:47:53.8865350Z           "evidence": [
2026-06-21T04:47:53.8865455Z             {
2026-06-21T04:47:53.8865607Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:53.8865718Z               "line": 487
2026-06-21T04:47:53.8865831Z             },
2026-06-21T04:47:53.8865936Z             {
2026-06-21T04:47:53.8866084Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:53.8866202Z               "line": 528
2026-06-21T04:47:53.8866309Z             },
2026-06-21T04:47:53.8866418Z             {
2026-06-21T04:47:53.8866559Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:53.8866674Z               "line": 541
2026-06-21T04:47:53.8866773Z             },
2026-06-21T04:47:53.8866885Z             {
2026-06-21T04:47:53.8867034Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:53.8867144Z               "line": 627
2026-06-21T04:47:53.8867248Z             }
2026-06-21T04:47:53.8867349Z           ]
2026-06-21T04:47:53.8867454Z         }
2026-06-21T04:47:53.8867558Z       }
2026-06-21T04:47:53.8867664Z     },
2026-06-21T04:47:53.8867768Z     {
2026-06-21T04:47:53.8867897Z       "id": "REQ-HAZARD-SOFT-CLEANUP",
2026-06-21T04:47:53.8868135Z       "title": "Soft-cleanup preserves state, removes only the ready marker (6.2)",
2026-06-21T04:47:53.8868240Z       "requiredStages": [
2026-06-21T04:47:53.8868365Z         "impl",
2026-06-21T04:47:53.8868469Z         "unit"
2026-06-21T04:47:53.8868585Z       ],
2026-06-21T04:47:53.8868688Z       "stages": {
2026-06-21T04:47:53.8868865Z         "doc": {
2026-06-21T04:47:53.8869055Z           "complete": false,
2026-06-21T04:47:53.8869171Z           "evidence": []
2026-06-21T04:47:53.8869271Z         },
2026-06-21T04:47:53.8869379Z         "impl": {
2026-06-21T04:47:53.8869498Z           "complete": true,
2026-06-21T04:47:53.8869609Z           "evidence": [
2026-06-21T04:47:53.8869713Z             {
2026-06-21T04:47:53.8869856Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T04:47:53.8869961Z               "line": 175
2026-06-21T04:47:53.8870074Z             },
2026-06-21T04:47:53.8870176Z             {
2026-06-21T04:47:53.8870329Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:53.8870538Z               "line": 171
2026-06-21T04:47:53.8870647Z             }
2026-06-21T04:47:53.8870757Z           ]
2026-06-21T04:47:53.8870858Z         },
2026-06-21T04:47:53.8870971Z         "int": {
2026-06-21T04:47:53.8871086Z           "complete": false,
2026-06-21T04:47:53.8871206Z           "evidence": []
2026-06-21T04:47:53.8871314Z         },
2026-06-21T04:47:53.8871424Z         "unit": {
2026-06-21T04:47:53.8871549Z           "complete": true,
2026-06-21T04:47:53.8871657Z           "evidence": [
2026-06-21T04:47:53.8871762Z             {
2026-06-21T04:47:53.8871908Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T04:47:53.8872017Z               "line": 297
2026-06-21T04:47:53.8872122Z             },
2026-06-21T04:47:53.8872228Z             {
2026-06-21T04:47:53.8872384Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:53.8872490Z               "line": 836
2026-06-21T04:47:53.8872589Z             },
2026-06-21T04:47:53.8872694Z             {
2026-06-21T04:47:53.8872837Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:53.8872946Z               "line": 849
2026-06-21T04:47:53.8873048Z             }
2026-06-21T04:47:53.8873152Z           ]
2026-06-21T04:47:53.8873256Z         }
2026-06-21T04:47:53.8873357Z       }
2026-06-21T04:47:53.8873467Z     },
2026-06-21T04:47:53.8873576Z     {
2026-06-21T04:47:53.8873716Z       "id": "REQ-HAZARD-STALE-INDEX-LOCK",
2026-06-21T04:47:53.8873872Z       "title": "Sweep stale lockfiles on daemon boot (1.3)",
2026-06-21T04:47:53.8873997Z       "requiredStages": [
2026-06-21T04:47:53.8874097Z         "impl",
2026-06-21T04:47:53.8874206Z         "unit"
2026-06-21T04:47:53.8874312Z       ],
2026-06-21T04:47:53.8874421Z       "stages": {
2026-06-21T04:47:53.8874534Z         "doc": {
2026-06-21T04:47:53.8874644Z           "complete": false,
2026-06-21T04:47:53.8874766Z           "evidence": []
2026-06-21T04:47:53.8874874Z         },
2026-06-21T04:47:53.8874984Z         "impl": {
2026-06-21T04:47:53.8875095Z           "complete": true,
2026-06-21T04:47:53.8875218Z           "evidence": [
2026-06-21T04:47:53.8875324Z             {
2026-06-21T04:47:53.8875466Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.8875595Z               "line": 116
2026-06-21T04:47:53.8875700Z             },
2026-06-21T04:47:53.8875799Z             {
2026-06-21T04:47:53.8875958Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T04:47:53.8876086Z               "line": 507
2026-06-21T04:47:53.8876186Z             }
2026-06-21T04:47:53.8876292Z           ]
2026-06-21T04:47:53.8876400Z         },
2026-06-21T04:47:53.8876501Z         "int": {
2026-06-21T04:47:53.8876631Z           "complete": false,
2026-06-21T04:47:53.8876743Z           "evidence": []
2026-06-21T04:47:53.8876849Z         },
2026-06-21T04:47:53.8876959Z         "unit": {
2026-06-21T04:47:53.8877072Z           "complete": true,
2026-06-21T04:47:53.8877191Z           "evidence": [
2026-06-21T04:47:53.8877295Z             {
2026-06-21T04:47:53.8877455Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T04:47:53.8877571Z               "line": 541
2026-06-21T04:47:53.8877680Z             }
2026-06-21T04:47:53.8877789Z           ]
2026-06-21T04:47:53.8877890Z         }
2026-06-21T04:47:53.8877995Z       }
2026-06-21T04:47:53.8878215Z     },
2026-06-21T04:47:53.8878319Z     {
2026-06-21T04:47:53.8878467Z       "id": "REQ-HAZARD-STALE-SIGNOFF-SENTINEL",
2026-06-21T04:47:53.8878672Z       "title": "Stale signoff sentinel does not kill a fresh start (3.2)",
2026-06-21T04:47:53.8878796Z       "requiredStages": [
2026-06-21T04:47:53.8878901Z         "impl",
2026-06-21T04:47:53.8879106Z         "unit"
2026-06-21T04:47:53.8879211Z       ],
2026-06-21T04:47:53.8879320Z       "stages": {
2026-06-21T04:47:53.8879435Z         "doc": {
2026-06-21T04:47:53.8879554Z           "complete": false,
2026-06-21T04:47:53.8879659Z           "evidence": []
2026-06-21T04:47:53.8879765Z         },
2026-06-21T04:47:53.8879968Z         "impl": {
2026-06-21T04:47:53.8880086Z           "complete": true,
2026-06-21T04:47:53.8880202Z           "evidence": [
2026-06-21T04:47:53.8880297Z             {
2026-06-21T04:47:53.8880459Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:53.8880564Z               "line": 552
2026-06-21T04:47:53.8880677Z             },
2026-06-21T04:47:53.8880779Z             {
2026-06-21T04:47:53.8880921Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T04:47:53.8881035Z               "line": 28
2026-06-21T04:47:53.8881136Z             }
2026-06-21T04:47:53.8881246Z           ]
2026-06-21T04:47:53.8881350Z         },
2026-06-21T04:47:53.8881451Z         "int": {
2026-06-21T04:47:53.8881575Z           "complete": false,
2026-06-21T04:47:53.8881690Z           "evidence": []
2026-06-21T04:47:53.8881795Z         },
2026-06-21T04:47:53.8881899Z         "unit": {
2026-06-21T04:47:53.8882024Z           "complete": true,
2026-06-21T04:47:53.8882132Z           "evidence": [
2026-06-21T04:47:53.8882241Z             {
2026-06-21T04:47:53.8882389Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T04:47:53.8882497Z               "line": 229
2026-06-21T04:47:53.8882610Z             }
2026-06-21T04:47:53.8882721Z           ]
2026-06-21T04:47:53.8882826Z         }
2026-06-21T04:47:53.8882934Z       }
2026-06-21T04:47:53.8883036Z     },
2026-06-21T04:47:53.8883145Z     {
2026-06-21T04:47:53.8883273Z       "id": "REQ-HAZARD-STDIN-SESSION-ID",
2026-06-21T04:47:53.8883450Z       "title": "Stdin session_id precedence over env (2.2)",
2026-06-21T04:47:53.8883569Z       "requiredStages": [],
2026-06-21T04:47:53.8883675Z       "stages": {
2026-06-21T04:47:53.8883793Z         "doc": {
2026-06-21T04:47:53.8883907Z           "complete": false,
2026-06-21T04:47:53.8884037Z           "evidence": []
2026-06-21T04:47:53.8884141Z         },
2026-06-21T04:47:53.8884252Z         "impl": {
2026-06-21T04:47:53.8884366Z           "complete": false,
2026-06-21T04:47:53.8884475Z           "evidence": []
2026-06-21T04:47:53.8884586Z         },
2026-06-21T04:47:53.8884685Z         "int": {
2026-06-21T04:47:53.8884804Z           "complete": false,
2026-06-21T04:47:53.8884920Z           "evidence": []
2026-06-21T04:47:53.8885028Z         },
2026-06-21T04:47:53.8885137Z         "unit": {
2026-06-21T04:47:53.8885261Z           "complete": false,
2026-06-21T04:47:53.8885387Z           "evidence": []
2026-06-21T04:47:53.8885496Z         }
2026-06-21T04:47:53.8885607Z       }
2026-06-21T04:47:53.8885711Z     },
2026-06-21T04:47:53.8885820Z     {
2026-06-21T04:47:53.8885964Z       "id": "REQ-HAZARD-SUBPROCESS-TIMEOUT",
2026-06-21T04:47:53.8886140Z       "title": "Every harness/git subprocess has a timeout (5.3)",
2026-06-21T04:47:53.8886265Z       "requiredStages": [
2026-06-21T04:47:53.8886374Z         "impl",
2026-06-21T04:47:53.8886479Z         "unit"
2026-06-21T04:47:53.8886575Z       ],
2026-06-21T04:47:53.8886689Z       "stages": {
2026-06-21T04:47:53.8886789Z         "doc": {
2026-06-21T04:47:53.8886913Z           "complete": false,
2026-06-21T04:47:53.8887032Z           "evidence": []
2026-06-21T04:47:53.8887133Z         },
2026-06-21T04:47:53.8887247Z         "impl": {
2026-06-21T04:47:53.8887361Z           "complete": true,
2026-06-21T04:47:53.8887472Z           "evidence": [
2026-06-21T04:47:53.8887571Z             {
2026-06-21T04:47:53.8887837Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T04:47:53.8887944Z               "line": 19
2026-06-21T04:47:53.8888048Z             },
2026-06-21T04:47:53.8888159Z             {
2026-06-21T04:47:53.8888311Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T04:47:53.8888431Z               "line": 463
2026-06-21T04:47:53.8888536Z             },
2026-06-21T04:47:53.8888640Z             {
2026-06-21T04:47:53.8888794Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T04:47:53.8888898Z               "line": 499
2026-06-21T04:47:53.8889085Z             },
2026-06-21T04:47:53.8889184Z             {
2026-06-21T04:47:53.8889513Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T04:47:53.8889623Z               "line": 547
2026-06-21T04:47:53.8889739Z             },
2026-06-21T04:47:53.8889851Z             {
2026-06-21T04:47:53.8889991Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T04:47:53.8890105Z               "line": 15
2026-06-21T04:47:53.8890204Z             },
2026-06-21T04:47:53.8890311Z             {
2026-06-21T04:47:53.8890452Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T04:47:53.8890570Z               "line": 48
2026-06-21T04:47:53.8890676Z             },
2026-06-21T04:47:53.8890772Z             {
2026-06-21T04:47:53.8890913Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T04:47:53.8891024Z               "line": 119
2026-06-21T04:47:53.8891134Z             },
2026-06-21T04:47:53.8891237Z             {
2026-06-21T04:47:53.8891377Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.8891495Z               "line": 3948
2026-06-21T04:47:53.8891601Z             }
2026-06-21T04:47:53.8891715Z           ]
2026-06-21T04:47:53.8891820Z         },
2026-06-21T04:47:53.8891935Z         "int": {
2026-06-21T04:47:53.8892049Z           "complete": false,
2026-06-21T04:47:53.8892163Z           "evidence": []
2026-06-21T04:47:53.8892270Z         },
2026-06-21T04:47:53.8892383Z         "unit": {
2026-06-21T04:47:53.8892511Z           "complete": true,
2026-06-21T04:47:53.8892613Z           "evidence": [
2026-06-21T04:47:53.8892716Z             {
2026-06-21T04:47:53.8892872Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T04:47:53.8892991Z               "line": 765
2026-06-21T04:47:53.8893099Z             },
2026-06-21T04:47:53.8893209Z             {
2026-06-21T04:47:53.8893353Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T04:47:53.8893461Z               "line": 165
2026-06-21T04:47:53.8893562Z             },
2026-06-21T04:47:53.8893672Z             {
2026-06-21T04:47:53.8893819Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T04:47:53.8893935Z               "line": 175
2026-06-21T04:47:53.8897412Z             }
2026-06-21T04:47:53.8897549Z           ]
2026-06-21T04:47:53.8897659Z         }
2026-06-21T04:47:53.8897770Z       }
2026-06-21T04:47:53.8897873Z     },
2026-06-21T04:47:53.8897984Z     {
2026-06-21T04:47:53.8898141Z       "id": "REQ-HAZARD-SUDO-SECURE-PATH",
2026-06-21T04:47:53.8899238Z       "title": "Elevation guidance on Unix names the binary's ABSOLUTE path under sudo (a user-local install ~/.local/bin · ~/.cargo/bin is not on sudo's secure_path, so bare `sudo spt` dies 'command not found'); gated commands auto-elevate on an interactive TTY, else print the runnable hint (5.10)",
2026-06-21T04:47:53.8899382Z       "requiredStages": [
2026-06-21T04:47:53.8899486Z         "impl",
2026-06-21T04:47:53.8899587Z         "unit"
2026-06-21T04:47:53.8899697Z       ],
2026-06-21T04:47:53.8899801Z       "stages": {
2026-06-21T04:47:53.8899921Z         "doc": {
2026-06-21T04:47:53.8900045Z           "complete": false,
2026-06-21T04:47:53.8900149Z           "evidence": []
2026-06-21T04:47:53.8900250Z         },
2026-06-21T04:47:53.8900359Z         "impl": {
2026-06-21T04:47:53.8900473Z           "complete": true,
2026-06-21T04:47:53.8900580Z           "evidence": [
2026-06-21T04:47:53.8900684Z             {
2026-06-21T04:47:53.8900985Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T04:47:53.8901093Z               "line": 192
2026-06-21T04:47:53.8901193Z             },
2026-06-21T04:47:53.8901289Z             {
2026-06-21T04:47:53.8901431Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T04:47:53.8901536Z               "line": 279
2026-06-21T04:47:53.8901646Z             }
2026-06-21T04:47:53.8901746Z           ]
2026-06-21T04:47:53.8901851Z         },
2026-06-21T04:47:53.8901951Z         "int": {
2026-06-21T04:47:53.8902070Z           "complete": false,
2026-06-21T04:47:53.8902190Z           "evidence": []
2026-06-21T04:47:53.8902295Z         },
2026-06-21T04:47:53.8902500Z         "unit": {
2026-06-21T04:47:53.8902609Z           "complete": true,
2026-06-21T04:47:53.8902728Z           "evidence": [
2026-06-21T04:47:53.8902825Z             {
2026-06-21T04:47:53.8902966Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T04:47:53.8903076Z               "line": 470
2026-06-21T04:47:53.8903187Z             },
2026-06-21T04:47:53.8903295Z             {
2026-06-21T04:47:53.8903432Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T04:47:53.8903537Z               "line": 526
2026-06-21T04:47:53.8903645Z             }
2026-06-21T04:47:53.8903750Z           ]
2026-06-21T04:47:53.8903856Z         }
2026-06-21T04:47:53.8903950Z       }
2026-06-21T04:47:53.8904055Z     },
2026-06-21T04:47:53.8904156Z     {
2026-06-21T04:47:53.8904298Z       "id": "REQ-HAZARD-TEMPLATE-ARGV-FILL",
2026-06-21T04:47:53.8908349Z       "title": "Command-template substitution fills argv ELEMENTS, not a re-tokenized string: spt-core currently `fill_template`s {key} values INTO the command STRING and THEN `tokenize`s the filled string (runtime.rs:94/122), so a multi-word {key} value whitespace-SPLITS into multiple argv tokens unless the adapter hand-quotes the placeholder, and a value containing a `\"` (or `;`) injects/breaks tokenization (shell-injection-adjacent). A filled value MUST become exactly ONE argv element regardless of spaces/quotes in the value. Fix: tokenize the TEMPLATE into argv FIRST, then `fill_template` EACH token, so a `{key}` slot resolves to a single element and the value never participates in tokenization (no whitespace-split, no quote/semicolon injection); preserve the missing-key / empty-command errors and `{{`/`}}` non-interpretation. perri's F-009 (v0.8.1 dogfood, argv-capture-confirmed): a multi-word `{psyche_prompt}` = \"PSYCHE REVIVAL time: epoch-ms:… incoming event: (none)\" arrived as argv[6..12] (7 stray tokens), the harness runner strict-parsed `--prompt` against the 2nd word, exited 2 within ~1s → phantom hosted perch. Applies to EVERY [session.<role>] template (psyche_init, extractor, notif, …); digest survives today only because its fills ({session_id}/{source}) are single-token.",
2026-06-21T04:47:53.8908500Z       "requiredStages": [
2026-06-21T04:47:53.8908607Z         "impl",
2026-06-21T04:47:53.8908715Z         "unit",
2026-06-21T04:47:53.8908824Z         "int"
2026-06-21T04:47:53.8909032Z       ],
2026-06-21T04:47:53.8909141Z       "stages": {
2026-06-21T04:47:53.8909246Z         "doc": {
2026-06-21T04:47:53.8909370Z           "complete": false,
2026-06-21T04:47:53.8909474Z           "evidence": []
2026-06-21T04:47:53.8909581Z         },
2026-06-21T04:47:53.8909690Z         "impl": {
2026-06-21T04:47:53.8909808Z           "complete": true,
2026-06-21T04:47:53.8909914Z           "evidence": [
2026-06-21T04:47:53.8910024Z             {
2026-06-21T04:47:53.8910191Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T04:47:53.8910294Z               "line": 116
2026-06-21T04:47:53.8910404Z             },
2026-06-21T04:47:53.8910530Z             {
2026-06-21T04:47:53.8910691Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T04:47:53.8910796Z               "line": 132
2026-06-21T04:47:53.8910906Z             },
2026-06-21T04:47:53.8911010Z             {
2026-06-21T04:47:53.8911159Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T04:47:53.8911372Z               "line": 434
2026-06-21T04:47:53.8911483Z             },
2026-06-21T04:47:53.8911587Z             {
2026-06-21T04:47:53.8911733Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T04:47:53.8911849Z               "line": 139
2026-06-21T04:47:53.8911958Z             },
2026-06-21T04:47:53.8912062Z             {
2026-06-21T04:47:53.8912216Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T04:47:53.8912325Z               "line": 326
2026-06-21T04:47:53.8912436Z             },
2026-06-21T04:47:53.8912545Z             {
2026-06-21T04:47:53.8912697Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T04:47:53.8912898Z               "line": 555
2026-06-21T04:47:53.8913002Z             }
2026-06-21T04:47:53.8913099Z           ]
2026-06-21T04:47:53.8913198Z         },
2026-06-21T04:47:53.8913312Z         "int": {
2026-06-21T04:47:53.8913418Z           "complete": true,
2026-06-21T04:47:53.8913531Z           "evidence": [
2026-06-21T04:47:53.8913641Z             {
2026-06-21T04:47:53.8913822Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-21T04:47:53.8913935Z               "line": 32
2026-06-21T04:47:53.8914041Z             }
2026-06-21T04:47:53.8914139Z           ]
2026-06-21T04:47:53.8914238Z         },
2026-06-21T04:47:53.8914348Z         "unit": {
2026-06-21T04:47:53.8914468Z           "complete": true,
2026-06-21T04:47:53.8914572Z           "evidence": [
2026-06-21T04:47:53.8914673Z             {
2026-06-21T04:47:53.8914820Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T04:47:53.8914934Z               "line": 625
2026-06-21T04:47:53.8915040Z             },
2026-06-21T04:47:53.8915140Z             {
2026-06-21T04:47:53.8915283Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T04:47:53.8915393Z               "line": 646
2026-06-21T04:47:53.8915502Z             },
2026-06-21T04:47:53.8915603Z             {
2026-06-21T04:47:53.8915755Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T04:47:53.8915869Z               "line": 662
2026-06-21T04:47:53.8915971Z             },
2026-06-21T04:47:53.8916079Z             {
2026-06-21T04:47:53.8916223Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T04:47:53.8916342Z               "line": 680
2026-06-21T04:47:53.8916451Z             },
2026-06-21T04:47:53.8916557Z             {
2026-06-21T04:47:53.8916708Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T04:47:53.8916817Z               "line": 704
2026-06-21T04:47:53.8916927Z             }
2026-06-21T04:47:53.8917030Z           ]
2026-06-21T04:47:53.8917143Z         }
2026-06-21T04:47:53.8917244Z       }
2026-06-21T04:47:53.8917345Z     },
2026-06-21T04:47:53.8917453Z     {
2026-06-21T04:47:53.8917588Z       "id": "REQ-HAZARD-UNC-PATH-STRIP",
2026-06-21T04:47:53.8917782Z       "title": "Strip Windows UNC prefix on serialized paths (5.4)",
2026-06-21T04:47:53.8917898Z       "requiredStages": [
2026-06-21T04:47:53.8918012Z         "impl",
2026-06-21T04:47:53.8918126Z         "unit"
2026-06-21T04:47:53.8918236Z       ],
2026-06-21T04:47:53.8918351Z       "stages": {
2026-06-21T04:47:53.8918455Z         "doc": {
2026-06-21T04:47:53.8918575Z           "complete": false,
2026-06-21T04:47:53.8918689Z           "evidence": []
2026-06-21T04:47:53.8918799Z         },
2026-06-21T04:47:53.8918904Z         "impl": {
2026-06-21T04:47:53.8919095Z           "complete": true,
2026-06-21T04:47:53.8919219Z           "evidence": [
2026-06-21T04:47:53.8919322Z             {
2026-06-21T04:47:53.8919484Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T04:47:53.8919602Z               "line": 35
2026-06-21T04:47:53.8919705Z             }
2026-06-21T04:47:53.8919811Z           ]
2026-06-21T04:47:53.8919921Z         },
2026-06-21T04:47:53.8920030Z         "int": {
2026-06-21T04:47:53.8920141Z           "complete": false,
2026-06-21T04:47:53.8920260Z           "evidence": []
2026-06-21T04:47:53.8920349Z         },
2026-06-21T04:47:53.8920560Z         "unit": {
2026-06-21T04:47:53.8920678Z           "complete": true,
2026-06-21T04:47:53.8920789Z           "evidence": [
2026-06-21T04:47:53.8920898Z             {
2026-06-21T04:47:53.8921041Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T04:47:53.8921151Z               "line": 220
2026-06-21T04:47:53.8921256Z             }
2026-06-21T04:47:53.8921361Z           ]
2026-06-21T04:47:53.8921461Z         }
2026-06-21T04:47:53.8921566Z       }
2026-06-21T04:47:53.8921671Z     },
2026-06-21T04:47:53.8921772Z     {
2026-06-21T04:47:53.8921913Z       "id": "REQ-HAZARD-UNHOST-PSYCHE-REAP",
2026-06-21T04:47:53.8925290Z       "title": "On un-host, the detached `{id}-psyche` HARNESS PROCESS is reaped — not just its in-brain pulse-driver thread. Today stop_host (livehost.rs:203) trips the HostedLife stop flag + JOINS the driver thread, but the Psyche is a detached harness process (spawn_psyche → ManifestRuntime detached spawn, runtime.rs:341-356; its pid is untracked in HostedLife though stamped on the `{id}-psyche` perch, where residency-confirm already reads it). So endpoint-stop / mid-life agent-death / a B2/B5 offline-then-unhost leaves the psyche process ORPHANED, alive until the next daemon-stop (where Breap's job/group reaps the whole brain subtree). The Psyche STAYS a harness process by design (CONTEXT.md 97/203/251 — headless harness session, its own perch) — the fix does NOT move it in-brain; it SCOPED-kills the `{id}-psyche` pid on un-host (never machine-wide — shared box). Track the pid in HostedLife at host_one (cleanest) or read the `{id}-psyche` perch pid at stop_host. Composes with H3 (endpoint stop → offline → reconcile un-host → reap) and B2/B5 (the offline arms that trigger un-host). (v0.12.0)",
2026-06-21T04:47:53.8925466Z       "requiredStages": [
2026-06-21T04:47:53.8925572Z         "impl",
2026-06-21T04:47:53.8925677Z         "unit",
2026-06-21T04:47:53.8925786Z         "int"
2026-06-21T04:47:53.8925887Z       ],
2026-06-21T04:47:53.8926006Z       "stages": {
2026-06-21T04:47:53.8926119Z         "doc": {
2026-06-21T04:47:53.8926235Z           "complete": false,
2026-06-21T04:47:53.8926344Z           "evidence": []
2026-06-21T04:47:53.8926443Z         },
2026-06-21T04:47:53.8926554Z         "impl": {
2026-06-21T04:47:53.8926673Z           "complete": true,
2026-06-21T04:47:53.8926778Z           "evidence": [
2026-06-21T04:47:53.8926883Z             {
2026-06-21T04:47:53.8927035Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:53.8927146Z               "line": 202
2026-06-21T04:47:53.8927250Z             },
2026-06-21T04:47:53.8927358Z             {
2026-06-21T04:47:53.8927520Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T04:47:53.8927628Z               "line": 107
2026-06-21T04:47:53.8927732Z             },
2026-06-21T04:47:53.8927833Z             {
2026-06-21T04:47:53.8927976Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T04:47:53.8928081Z               "line": 138
2026-06-21T04:47:53.8928186Z             },
2026-06-21T04:47:53.8928290Z             {
2026-06-21T04:47:53.8928440Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T04:47:53.8928553Z               "line": 209
2026-06-21T04:47:53.8928657Z             },
2026-06-21T04:47:53.8928759Z             {
2026-06-21T04:47:53.8928920Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T04:47:53.8929116Z               "line": 246
2026-06-21T04:47:53.8929220Z             },
2026-06-21T04:47:53.8929325Z             {
2026-06-21T04:47:53.8929502Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T04:47:53.8929597Z               "line": 379
2026-06-21T04:47:53.8929708Z             }
2026-06-21T04:47:53.8929812Z           ]
2026-06-21T04:47:53.8929925Z         },
2026-06-21T04:47:53.8930030Z         "int": {
2026-06-21T04:47:53.8930138Z           "complete": true,
2026-06-21T04:47:53.8930246Z           "evidence": [
2026-06-21T04:47:53.8930352Z             {
2026-06-21T04:47:53.8930633Z               "path": "crates/spt/tests/unhost_psyche_reap_e2e.rs",
2026-06-21T04:47:53.8930744Z               "line": 17
2026-06-21T04:47:53.8930848Z             }
2026-06-21T04:47:53.8930952Z           ]
2026-06-21T04:47:53.8931058Z         },
2026-06-21T04:47:53.8931167Z         "unit": {
2026-06-21T04:47:53.8931272Z           "complete": true,
2026-06-21T04:47:53.8931382Z           "evidence": [
2026-06-21T04:47:53.8931482Z             {
2026-06-21T04:47:53.8931631Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.8931749Z               "line": 982
2026-06-21T04:47:53.8931849Z             }
2026-06-21T04:47:53.8931950Z           ]
2026-06-21T04:47:53.8932150Z         }
2026-06-21T04:47:53.8932256Z       }
2026-06-21T04:47:53.8932364Z     },
2026-06-21T04:47:53.8932469Z     {
2026-06-21T04:47:53.8932604Z       "id": "REQ-HAZARD-UPDATE-ROLLBACK",
2026-06-21T04:47:53.8932907Z       "title": "Self-update rejects version rollback; metadata expiry + adapter content signing (codex #5)",
2026-06-21T04:47:53.8933036Z       "requiredStages": [
2026-06-21T04:47:53.8933145Z         "impl",
2026-06-21T04:47:53.8933250Z         "unit"
2026-06-21T04:47:53.8933361Z       ],
2026-06-21T04:47:53.8933459Z       "stages": {
2026-06-21T04:47:53.8933565Z         "doc": {
2026-06-21T04:47:53.8933680Z           "complete": false,
2026-06-21T04:47:53.8933793Z           "evidence": []
2026-06-21T04:47:53.8933899Z         },
2026-06-21T04:47:53.8934008Z         "impl": {
2026-06-21T04:47:53.8934118Z           "complete": true,
2026-06-21T04:47:53.8934214Z           "evidence": [
2026-06-21T04:47:53.8934322Z             {
2026-06-21T04:47:53.8934481Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T04:47:53.8934604Z               "line": 405
2026-06-21T04:47:53.8934704Z             },
2026-06-21T04:47:53.8934815Z             {
2026-06-21T04:47:53.8934961Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:53.8935065Z               "line": 409
2026-06-21T04:47:53.8935170Z             },
2026-06-21T04:47:53.8935274Z             {
2026-06-21T04:47:53.8935425Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T04:47:53.8935536Z               "line": 156
2026-06-21T04:47:53.8935645Z             }
2026-06-21T04:47:53.8935750Z           ]
2026-06-21T04:47:53.8935841Z         },
2026-06-21T04:47:53.8935950Z         "int": {
2026-06-21T04:47:53.8936064Z           "complete": false,
2026-06-21T04:47:53.8936175Z           "evidence": []
2026-06-21T04:47:53.8936279Z         },
2026-06-21T04:47:53.8936389Z         "unit": {
2026-06-21T04:47:53.8936504Z           "complete": true,
2026-06-21T04:47:53.8936608Z           "evidence": [
2026-06-21T04:47:53.8936723Z             {
2026-06-21T04:47:53.8936870Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:53.8936975Z               "line": 865
2026-06-21T04:47:53.8937081Z             },
2026-06-21T04:47:53.8937180Z             {
2026-06-21T04:47:53.8937333Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:53.8937448Z               "line": 879
2026-06-21T04:47:53.8937552Z             },
2026-06-21T04:47:53.8937653Z             {
2026-06-21T04:47:53.8937800Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:53.8937909Z               "line": 898
2026-06-21T04:47:53.8938013Z             },
2026-06-21T04:47:53.8938122Z             {
2026-06-21T04:47:53.8938264Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:53.8938374Z               "line": 915
2026-06-21T04:47:53.8938484Z             },
2026-06-21T04:47:53.8938588Z             {
2026-06-21T04:47:53.8938746Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T04:47:53.8938860Z               "line": 441
2026-06-21T04:47:53.8939032Z             }
2026-06-21T04:47:53.8939128Z           ]
2026-06-21T04:47:53.8939236Z         }
2026-06-21T04:47:53.8939352Z       }
2026-06-21T04:47:53.8939452Z     },
2026-06-21T04:47:53.8939551Z     {
2026-06-21T04:47:53.8939804Z       "id": "REQ-HAZARD-VIEWER-CLOSE-DETACH",
2026-06-21T04:47:53.8950049Z       "title": "A VIEW is independent from the endpoint: closing the tab/window where `spt endpoint run` was invoked must detach ONLY the `spt rc` attach pump — the daemon-hosted harness keeps running and stays re-attachable via `spt rc <id>`. ROOT (Windows, v0.12.0 real-harness defect): the daemon never breaks away from the launching terminal's Job Object. Windows Terminal / VS Code place the launched shell AND every descendant into a Job Object with JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE; closing the tab drops the terminal's last job handle → the OS terminates every process still in that job. A child escapes only with CREATE_BREAKAWAY_FROM_JOB — used NOWHERE in the tree. Both daemon spawn paths (daemon.rs:707 detached_no_inherit = DETACHED_PROCESS|CREATE_NEW_PROCESS_GROUP|CREATE_NO_WINDOW; deelevate.rs:519 elevated = CREATE_NEW_CONSOLE|...) drop the CONSOLE but NOT job membership, so the daemon's freshly broker-spawned ConPTY harness subtree is reaped on tab-close. The ConPTY/pseudoconsole isolation itself is CORRECT (portable-pty builds the pseudoconsole in the daemon; no console signal / handle leak) — the leaking lifetime binding is the Job Object, not the console. FIX: add CREATE_BREAKAWAY_FROM_JOB to both daemon spawn paths AND pin each broker-spawned harness into a DAEMON-OWNED Job Object (mirror reap.rs/Breap) as backstop (survives even where a terminal sets SILENT_BREAKAWAY_OK=false). Unix: the daemon's own session detachment (new session, no controlling terminal) already keeps a closing terminal's SIGHUP off its children — verify, add a guard test, no code expected. FIX UPDATE (v0.12.1 L1.5, doyle re-scope operator-approved 2026-06-18): job-neutral daemon launch is now PRIMARY, breakaway DEMOTED to a fallback rung. ROOT reframed — the daemon INHERITS the terminal's Job because spawn_detached runs FROM the terminal-child CLI (DETACHED_PROCESS detaches the console, not the job); breakaway tried to claw back out but a job CAN deny it (the L1 finding). FIX: launch the cold-started daemon via a job-NEUTRAL creator so it is WmiPrvSE/Task-Scheduler-owned, OUTSIDE any terminal job from birth (why Task-Scheduler-autostarted daemons never had this bug). Launcher ladder (first-success-wins, daemon.rs spawn_detached → BOTH cold-start AND `spt daemon start`): (1) WMI Win32_Process.Create via ABSOLUTE powershell -EncodedCommand (KH 5.12 abs path; base64-UTF16LE dodges all quoting; success requires BOTH ReturnValue==0 AND a parsed ProcessId, else fall-through — never a silent launched), forwarding SPT_* env via a `cmd /c set … & start /b` wrapper because a WMI/scheduler child does NOT inherit transient shell env (verified — SPT_HOME would be lost, wrong universe); (2) schtasks one-shot (same env wrapper; best-effort fallback); (3) CREATE_BREAKAWAY_FROM_JOB (the L1 code, reordered below); (4) in-job last resort (logs DETACH_IN_JOB + tab-close caveat). detached_no_inherit (breakaway-then-in-job) is UNCHANGED for its other caller shellhost::launch_shell (a daemon-spawned shell is already job-neutral once the daemon is). The elevated deelevate path keeps its L1 breakaway for now (elevated-case WMI-reparent = FOLLOW-UP). (v0.12.1)",
2026-06-21T04:47:53.8950427Z       "requiredStages": [
2026-06-21T04:47:53.8950537Z         "doc",
2026-06-21T04:47:53.8950636Z         "impl",
2026-06-21T04:47:53.8950741Z         "unit",
2026-06-21T04:47:53.8950848Z         "int"
2026-06-21T04:47:53.8950951Z       ],
2026-06-21T04:47:53.8951054Z       "stages": {
2026-06-21T04:47:53.8951155Z         "doc": {
2026-06-21T04:47:53.8951277Z           "complete": true,
2026-06-21T04:47:53.8951390Z           "evidence": [
2026-06-21T04:47:53.8951515Z             {
2026-06-21T04:47:53.8951639Z               "path": "CONTEXT.md",
2026-06-21T04:47:53.8951744Z               "line": 420
2026-06-21T04:47:53.8951854Z             },
2026-06-21T04:47:53.8951954Z             {
2026-06-21T04:47:53.8952097Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T04:47:53.8952301Z               "line": 402
2026-06-21T04:47:53.8952402Z             }
2026-06-21T04:47:53.8952502Z           ]
2026-06-21T04:47:53.8952607Z         },
2026-06-21T04:47:53.8952707Z         "impl": {
2026-06-21T04:47:53.8952817Z           "complete": true,
2026-06-21T04:47:53.8952927Z           "evidence": [
2026-06-21T04:47:53.8953037Z             {
2026-06-21T04:47:53.8953189Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.8953303Z               "line": 797
2026-06-21T04:47:53.8953414Z             },
2026-06-21T04:47:53.8953517Z             {
2026-06-21T04:47:53.8953657Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.8953841Z               "line": 822
2026-06-21T04:47:53.8953950Z             },
2026-06-21T04:47:53.8954056Z             {
2026-06-21T04:47:53.8954199Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.8954308Z               "line": 839
2026-06-21T04:47:53.8954414Z             },
2026-06-21T04:47:53.8954518Z             {
2026-06-21T04:47:53.8954667Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.8954771Z               "line": 854
2026-06-21T04:47:53.8954866Z             },
2026-06-21T04:47:53.8954976Z             {
2026-06-21T04:47:53.8955109Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.8955218Z               "line": 874
2026-06-21T04:47:53.8955329Z             },
2026-06-21T04:47:53.8955438Z             {
2026-06-21T04:47:53.8955587Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.8955692Z               "line": 964
2026-06-21T04:47:53.8955800Z             },
2026-06-21T04:47:53.8955911Z             {
2026-06-21T04:47:53.8956058Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.8956181Z               "line": 1016
2026-06-21T04:47:53.8956281Z             },
2026-06-21T04:47:53.8956394Z             {
2026-06-21T04:47:53.8956536Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.8956647Z               "line": 1075
2026-06-21T04:47:53.8956742Z             },
2026-06-21T04:47:53.8956841Z             {
2026-06-21T04:47:53.8956999Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T04:47:53.8957108Z               "line": 527
2026-06-21T04:47:53.8957204Z             }
2026-06-21T04:47:53.8957305Z           ]
2026-06-21T04:47:53.8957409Z         },
2026-06-21T04:47:53.8957514Z         "int": {
2026-06-21T04:47:53.8957634Z           "complete": true,
2026-06-21T04:47:53.8957738Z           "evidence": [
2026-06-21T04:47:53.8957843Z             {
2026-06-21T04:47:53.8958000Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T04:47:53.8958114Z               "line": 35
2026-06-21T04:47:53.8958221Z             },
2026-06-21T04:47:53.8958319Z             {
2026-06-21T04:47:53.8958473Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T04:47:53.8958592Z               "line": 569
2026-06-21T04:47:53.8958697Z             },
2026-06-21T04:47:53.8958802Z             {
2026-06-21T04:47:53.8959034Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T04:47:53.8959153Z               "line": 590
2026-06-21T04:47:53.8959257Z             }
2026-06-21T04:47:53.8959375Z           ]
2026-06-21T04:47:53.8959485Z         },
2026-06-21T04:47:53.8959591Z         "unit": {
2026-06-21T04:47:53.8959713Z           "complete": true,
2026-06-21T04:47:53.8959829Z           "evidence": [
2026-06-21T04:47:53.8959938Z             {
2026-06-21T04:47:53.8960081Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.8960205Z               "line": 1202
2026-06-21T04:47:53.8960309Z             },
2026-06-21T04:47:53.8960420Z             {
2026-06-21T04:47:53.8960572Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.8960681Z               "line": 1246
2026-06-21T04:47:53.8960788Z             },
2026-06-21T04:47:53.8960886Z             {
2026-06-21T04:47:53.8961035Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.8961244Z               "line": 1260
2026-06-21T04:47:53.8961350Z             },
2026-06-21T04:47:53.8961450Z             {
2026-06-21T04:47:53.8961587Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.8961696Z               "line": 1278
2026-06-21T04:47:53.8961800Z             },
2026-06-21T04:47:53.8961904Z             {
2026-06-21T04:47:53.8962056Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.8962161Z               "line": 1302
2026-06-21T04:47:53.8962261Z             },
2026-06-21T04:47:53.8962352Z             {
2026-06-21T04:47:53.8962500Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.8962729Z               "line": 1529
2026-06-21T04:47:53.8962829Z             }
2026-06-21T04:47:53.8962933Z           ]
2026-06-21T04:47:53.8963039Z         }
2026-06-21T04:47:53.8963143Z       }
2026-06-21T04:47:53.8963248Z     },
2026-06-21T04:47:53.8963354Z     {
2026-06-21T04:47:53.8963501Z       "id": "REQ-HAZARD-VIEWER-ISOLATION",
2026-06-21T04:47:53.8965783Z       "title": "A slow / dead / hostile VIEWER must NEVER stall the controller, the PTY child, or the session drain thread. The broker drain fans output to the controller on the authoritative blocking bounded path (advances delivered_through) but to each viewer via a bounded per-viewer channel with a dedicated writer thread; the drain `try_send`s under the log lock and a viewer whose bounded queue OVERFLOWS (can't keep up) is EVICTED (queue dropped, writer thread ends, removed from the viewers map) — the drain thread NEVER touches a viewer socket, so no viewer write can backpressure or block it. A soft viewer cap bounds the thread count. Viewer eviction never perturbs the controller stream, the delivered_through cursor, or the child.",
2026-06-21T04:47:53.8965927Z       "requiredStages": [
2026-06-21T04:47:53.8966037Z         "unit",
2026-06-21T04:47:53.8966142Z         "int"
2026-06-21T04:47:53.8966242Z       ],
2026-06-21T04:47:53.8966355Z       "stages": {
2026-06-21T04:47:53.8966461Z         "doc": {
2026-06-21T04:47:53.8966567Z           "complete": true,
2026-06-21T04:47:53.8966689Z           "evidence": [
2026-06-21T04:47:53.8966798Z             {
2026-06-21T04:47:53.8966936Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T04:47:53.8967044Z               "line": 381
2026-06-21T04:47:53.8967144Z             }
2026-06-21T04:47:53.8967250Z           ]
2026-06-21T04:47:53.8967354Z         },
2026-06-21T04:47:53.8967474Z         "impl": {
2026-06-21T04:47:53.8967593Z           "complete": true,
2026-06-21T04:47:53.8967692Z           "evidence": [
2026-06-21T04:47:53.8967794Z             {
2026-06-21T04:47:53.8967945Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.8968055Z               "line": 100
2026-06-21T04:47:53.8968161Z             }
2026-06-21T04:47:53.8968270Z           ]
2026-06-21T04:47:53.8968379Z         },
2026-06-21T04:47:53.8968480Z         "int": {
2026-06-21T04:47:53.8968599Z           "complete": true,
2026-06-21T04:47:53.8968713Z           "evidence": [
2026-06-21T04:47:53.8968819Z             {
2026-06-21T04:47:53.8969043Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T04:47:53.8969157Z               "line": 1042
2026-06-21T04:47:53.8969257Z             }
2026-06-21T04:47:53.8969353Z           ]
2026-06-21T04:47:53.8969472Z         },
2026-06-21T04:47:53.8969580Z         "unit": {
2026-06-21T04:47:53.8969689Z           "complete": true,
2026-06-21T04:47:53.8969798Z           "evidence": [
2026-06-21T04:47:53.8969901Z             {
2026-06-21T04:47:53.8970045Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.8970160Z               "line": 2217
2026-06-21T04:47:53.8970268Z             }
2026-06-21T04:47:53.8970370Z           ]
2026-06-21T04:47:53.8970480Z         }
2026-06-21T04:47:53.8970578Z       }
2026-06-21T04:47:53.8970684Z     },
2026-06-21T04:47:53.8970784Z     {
2026-06-21T04:47:53.8970917Z       "id": "REQ-HAZARD-WAN-ORIGIN-AUTH",
2026-06-21T04:47:53.8971915Z       "title": "WAN-inbound origin is transport truth, never payload: the access gate's subject (ADR-0009 origin-node whitelist) is the QUIC handshake-proven remote node id from the broker's conn/stream table — a forged origin/node field inside record bytes is inert (7.5)",
2026-06-21T04:47:53.8972039Z       "requiredStages": [
2026-06-21T04:47:53.8972156Z         "doc",
2026-06-21T04:47:53.8972266Z         "impl",
2026-06-21T04:47:53.8972370Z         "unit"
2026-06-21T04:47:53.8972464Z       ],
2026-06-21T04:47:53.8972569Z       "stages": {
2026-06-21T04:47:53.8972679Z         "doc": {
2026-06-21T04:47:53.8972787Z           "complete": true,
2026-06-21T04:47:53.8973007Z           "evidence": [
2026-06-21T04:47:53.8973112Z             {
2026-06-21T04:47:53.8973242Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T04:47:53.8973341Z               "line": 366
2026-06-21T04:47:53.8973445Z             }
2026-06-21T04:47:53.8973556Z           ]
2026-06-21T04:47:53.8973670Z         },
2026-06-21T04:47:53.8973775Z         "impl": {
2026-06-21T04:47:53.8973881Z           "complete": true,
2026-06-21T04:47:53.8973984Z           "evidence": [
2026-06-21T04:47:53.8974099Z             {
2026-06-21T04:47:53.8974243Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T04:47:53.8974352Z               "line": 87
2026-06-21T04:47:53.8974447Z             },
2026-06-21T04:47:53.8974558Z             {
2026-06-21T04:47:53.8974690Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T04:47:53.8974802Z               "line": 105
2026-06-21T04:47:53.8974910Z             },
2026-06-21T04:47:53.8975019Z             {
2026-06-21T04:47:53.8975171Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T04:47:53.8975276Z               "line": 55
2026-06-21T04:47:53.8975394Z             },
2026-06-21T04:47:53.8975501Z             {
2026-06-21T04:47:53.8975652Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T04:47:53.8975767Z               "line": 31
2026-06-21T04:47:53.8975877Z             },
2026-06-21T04:47:53.8975986Z             {
2026-06-21T04:47:53.8976131Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T04:47:53.8976244Z               "line": 446
2026-06-21T04:47:53.8976349Z             },
2026-06-21T04:47:53.8976445Z             {
2026-06-21T04:47:53.8976606Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T04:47:53.8976717Z               "line": 95
2026-06-21T04:47:53.8976816Z             },
2026-06-21T04:47:53.8976921Z             {
2026-06-21T04:47:53.8977075Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T04:47:53.8977192Z               "line": 29
2026-06-21T04:47:53.8977296Z             },
2026-06-21T04:47:53.8977402Z             {
2026-06-21T04:47:53.8977552Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T04:47:53.8977671Z               "line": 104
2026-06-21T04:47:53.8977767Z             },
2026-06-21T04:47:53.8977876Z             {
2026-06-21T04:47:53.8978029Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.8978134Z               "line": 208
2026-06-21T04:47:53.8978248Z             },
2026-06-21T04:47:53.8978354Z             {
2026-06-21T04:47:53.8978496Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T04:47:53.8978595Z               "line": 28
2026-06-21T04:47:53.8978697Z             },
2026-06-21T04:47:53.8978806Z             {
2026-06-21T04:47:53.8979021Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T04:47:53.8979140Z               "line": 74
2026-06-21T04:47:53.8979239Z             },
2026-06-21T04:47:53.8979355Z             {
2026-06-21T04:47:53.8979516Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T04:47:53.8979632Z               "line": 32
2026-06-21T04:47:53.8979736Z             },
2026-06-21T04:47:53.8979836Z             {
2026-06-21T04:47:53.8979980Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T04:47:53.8980192Z               "line": 40
2026-06-21T04:47:53.8980302Z             },
2026-06-21T04:47:53.8980400Z             {
2026-06-21T04:47:53.8980547Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T04:47:53.8980658Z               "line": 184
2026-06-21T04:47:53.8980753Z             },
2026-06-21T04:47:53.8980867Z             {
2026-06-21T04:47:53.8980997Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T04:47:53.8981110Z               "line": 61
2026-06-21T04:47:53.8981211Z             },
2026-06-21T04:47:53.8981316Z             {
2026-06-21T04:47:53.8981462Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T04:47:53.8981668Z               "line": 131
2026-06-21T04:47:53.8981777Z             },
2026-06-21T04:47:53.8981879Z             {
2026-06-21T04:47:53.8982016Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T04:47:53.8982126Z               "line": 223
2026-06-21T04:47:53.8982232Z             },
2026-06-21T04:47:53.8982344Z             {
2026-06-21T04:47:53.8982495Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T04:47:53.8982604Z               "line": 37
2026-06-21T04:47:53.8982707Z             },
2026-06-21T04:47:53.8982816Z             {
2026-06-21T04:47:53.8982972Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T04:47:53.8983081Z               "line": 38
2026-06-21T04:47:53.8983191Z             },
2026-06-21T04:47:53.8983296Z             {
2026-06-21T04:47:53.8983443Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T04:47:53.8983553Z               "line": 36
2026-06-21T04:47:53.8983653Z             },
2026-06-21T04:47:53.8983763Z             {
2026-06-21T04:47:53.8983911Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T04:47:53.8984020Z               "line": 40
2026-06-21T04:47:53.8984126Z             }
2026-06-21T04:47:53.8984235Z           ]
2026-06-21T04:47:53.8984330Z         },
2026-06-21T04:47:53.8984441Z         "int": {
2026-06-21T04:47:53.8984574Z           "complete": false,
2026-06-21T04:47:53.8984679Z           "evidence": []
2026-06-21T04:47:53.8984789Z         },
2026-06-21T04:47:53.8984887Z         "unit": {
2026-06-21T04:47:53.8985017Z           "complete": true,
2026-06-21T04:47:53.8985123Z           "evidence": [
2026-06-21T04:47:53.8985226Z             {
2026-06-21T04:47:53.8985385Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T04:47:53.8985494Z               "line": 212
2026-06-21T04:47:53.8985607Z             },
2026-06-21T04:47:53.8985712Z             {
2026-06-21T04:47:53.8985865Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-21T04:47:53.8985979Z               "line": 136
2026-06-21T04:47:53.8986094Z             },
2026-06-21T04:47:53.8986203Z             {
2026-06-21T04:47:53.8986352Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T04:47:53.8986466Z               "line": 685
2026-06-21T04:47:53.8986570Z             },
2026-06-21T04:47:53.8986676Z             {
2026-06-21T04:47:53.8986814Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T04:47:53.8986923Z               "line": 224
2026-06-21T04:47:53.8987025Z             },
2026-06-21T04:47:53.8987128Z             {
2026-06-21T04:47:53.8987287Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T04:47:53.8987386Z               "line": 206
2026-06-21T04:47:53.8987495Z             },
2026-06-21T04:47:53.8987596Z             {
2026-06-21T04:47:53.8987734Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T04:47:53.8987847Z               "line": 112
2026-06-21T04:47:53.8987947Z             },
2026-06-21T04:47:53.8988056Z             {
2026-06-21T04:47:53.8988207Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T04:47:53.8988317Z               "line": 157
2026-06-21T04:47:53.8988427Z             },
2026-06-21T04:47:53.8988526Z             {
2026-06-21T04:47:53.8988675Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T04:47:53.8988784Z               "line": 215
2026-06-21T04:47:53.8989047Z             },
2026-06-21T04:47:53.8989151Z             {
2026-06-21T04:47:53.8989304Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T04:47:53.8989414Z               "line": 141
2026-06-21T04:47:53.8989519Z             },
2026-06-21T04:47:53.8989624Z             {
2026-06-21T04:47:53.8989767Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T04:47:53.8989873Z               "line": 162
2026-06-21T04:47:53.8989971Z             }
2026-06-21T04:47:53.8990081Z           ]
2026-06-21T04:47:53.8990183Z         }
2026-06-21T04:47:53.8990286Z       }
2026-06-21T04:47:53.8990396Z     },
2026-06-21T04:47:53.8990592Z     {
2026-06-21T04:47:53.8990747Z       "id": "REQ-HAZARD-WIN-PTY-PROGRAM-RESOLVE",
2026-06-21T04:47:53.8992681Z       "title": "Native-PTY spawn must resolve a bare program name with PATHEXT precedence and run a non-PE target through its interpreter: portable-pty's own `which` takes the FIRST PATH match — an extensionless shebang shim (e.g. a node CLI `ccs` shipped beside `ccs.cmd`) — and CreateProcessW then rejects the non-PE file with os error 193 ('not a valid Win32 application'); spt-term resolves the program itself (PATHEXT order prefers .EXE over .CMD; .cmd/.bat → cmd.exe /d /c, .ps1 → powershell -NoProfile -File) so a bare harness/shell [session.self] command actually launches on Windows. Unix is a passthrough (execve honours the shebang).",
2026-06-21T04:47:53.8992806Z       "requiredStages": [
2026-06-21T04:47:53.8992910Z         "doc",
2026-06-21T04:47:53.8993016Z         "impl",
2026-06-21T04:47:53.8993121Z         "unit",
2026-06-21T04:47:53.8993234Z         "int"
2026-06-21T04:47:53.8993347Z       ],
2026-06-21T04:47:53.8993453Z       "stages": {
2026-06-21T04:47:53.8993560Z         "doc": {
2026-06-21T04:47:53.8993684Z           "complete": true,
2026-06-21T04:47:53.8993799Z           "evidence": [
2026-06-21T04:47:53.8993898Z             {
2026-06-21T04:47:53.8994033Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T04:47:53.8994162Z               "line": 250
2026-06-21T04:47:53.8994265Z             }
2026-06-21T04:47:53.8994367Z           ]
2026-06-21T04:47:53.8994471Z         },
2026-06-21T04:47:53.8994575Z         "impl": {
2026-06-21T04:47:53.8994691Z           "complete": true,
2026-06-21T04:47:53.8994799Z           "evidence": [
2026-06-21T04:47:53.8994909Z             {
2026-06-21T04:47:53.8995053Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T04:47:53.8995168Z               "line": 135
2026-06-21T04:47:53.8995272Z             },
2026-06-21T04:47:53.8995378Z             {
2026-06-21T04:47:53.8995524Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T04:47:53.8995645Z               "line": 157
2026-06-21T04:47:53.8995744Z             }
2026-06-21T04:47:53.8995853Z           ]
2026-06-21T04:47:53.8995955Z         },
2026-06-21T04:47:53.8996068Z         "int": {
2026-06-21T04:47:53.8996181Z           "complete": true,
2026-06-21T04:47:53.8996301Z           "evidence": [
2026-06-21T04:47:53.8996420Z             {
2026-06-21T04:47:53.8996573Z               "path": "crates/spt-term/tests/winspawn.rs",
2026-06-21T04:47:53.8996687Z               "line": 15
2026-06-21T04:47:53.8996791Z             }
2026-06-21T04:47:53.8996893Z           ]
2026-06-21T04:47:53.8996997Z         },
2026-06-21T04:47:53.8997106Z         "unit": {
2026-06-21T04:47:53.8997222Z           "complete": true,
2026-06-21T04:47:53.8997331Z           "evidence": [
2026-06-21T04:47:53.8997440Z             {
2026-06-21T04:47:53.9001265Z               "path": "crates/spt-term/src/winprog.rs",
2026-06-21T04:47:53.9001423Z               "line": 233
2026-06-21T04:47:53.9001530Z             }
2026-06-21T04:47:53.9001648Z           ]
2026-06-21T04:47:53.9001754Z         }
2026-06-21T04:47:53.9001859Z       }
2026-06-21T04:47:53.9001968Z     },
2026-06-21T04:47:53.9002069Z     {
2026-06-21T04:47:53.9002216Z       "id": "REQ-HAZARD-WINDOWS-PID-RECYCLE",
2026-06-21T04:47:53.9002417Z       "title": "Windows PID-recycling false positives guarded (5.1)",
2026-06-21T04:47:53.9002699Z       "requiredStages": [
2026-06-21T04:47:53.9002812Z         "impl",
2026-06-21T04:47:53.9002927Z         "unit"
2026-06-21T04:47:53.9003028Z       ],
2026-06-21T04:47:53.9003141Z       "stages": {
2026-06-21T04:47:53.9003246Z         "doc": {
2026-06-21T04:47:53.9003357Z           "complete": false,
2026-06-21T04:47:53.9003465Z           "evidence": []
2026-06-21T04:47:53.9003566Z         },
2026-06-21T04:47:53.9003676Z         "impl": {
2026-06-21T04:47:53.9003799Z           "complete": true,
2026-06-21T04:47:53.9003908Z           "evidence": [
2026-06-21T04:47:53.9004017Z             {
2026-06-21T04:47:53.9004297Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T04:47:53.9004412Z               "line": 95
2026-06-21T04:47:53.9004511Z             },
2026-06-21T04:47:53.9004603Z             {
2026-06-21T04:47:53.9004745Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:53.9004864Z               "line": 117
2026-06-21T04:47:53.9004969Z             }
2026-06-21T04:47:53.9005070Z           ]
2026-06-21T04:47:53.9005169Z         },
2026-06-21T04:47:53.9005280Z         "int": {
2026-06-21T04:47:53.9005399Z           "complete": false,
2026-06-21T04:47:53.9005498Z           "evidence": []
2026-06-21T04:47:53.9005599Z         },
2026-06-21T04:47:53.9005708Z         "unit": {
2026-06-21T04:47:53.9005823Z           "complete": true,
2026-06-21T04:47:53.9005942Z           "evidence": [
2026-06-21T04:47:53.9006042Z             {
2026-06-21T04:47:53.9006191Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T04:47:53.9006304Z               "line": 250
2026-06-21T04:47:53.9006414Z             },
2026-06-21T04:47:53.9006515Z             {
2026-06-21T04:47:53.9006656Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T04:47:53.9006770Z               "line": 412
2026-06-21T04:47:53.9006881Z             },
2026-06-21T04:47:53.9006985Z             {
2026-06-21T04:47:53.9007123Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:53.9007229Z               "line": 611
2026-06-21T04:47:53.9007338Z             },
2026-06-21T04:47:53.9007438Z             {
2026-06-21T04:47:53.9007576Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:53.9007685Z               "line": 669
2026-06-21T04:47:53.9007787Z             }
2026-06-21T04:47:53.9007896Z           ]
2026-06-21T04:47:53.9008000Z         }
2026-06-21T04:47:53.9008102Z       }
2026-06-21T04:47:53.9008192Z     },
2026-06-21T04:47:53.9008296Z     {
2026-06-21T04:47:53.9008435Z       "id": "REQ-HAZARD-WMI-DAEMON-WINDOW",
2026-06-21T04:47:53.9011129Z       "title": "`spt daemon start` launches the daemon with NO visible console window. REGRESSION (v0.12.1 L1.5): the WMI job-neutral launch (spawn_daemon_via_wmi) set CREATE_NO_WINDOW on the launching powershell but NOT on the Win32_Process.Create call — Win32_Process.Create does not inherit it, so the spawned cmd.exe env-forwarding wrapper popped a console window on every cold-start (violating REQ-INSTALL-10's v0.7.4 no-persistent-window invariant; the old detached_no_inherit path set DETACHED_PROCESS|CREATE_NO_WINDOW). FIX: pass a Win32_ProcessStartup with CreateFlags=DETACHED_PROCESS (0x8 — no console so no window; CREATE_NO_WINDOW 0x08000000 is NOT a valid Win32_ProcessStartup flag → ReturnValue 21 invalid-param, which is why the naive port fails) + ShowWindow=SW_HIDE(0) belt, via the ProcessStartupInformation argument. (v0.12.2)",
2026-06-21T04:47:53.9011274Z       "requiredStages": [
2026-06-21T04:47:53.9011388Z         "impl",
2026-06-21T04:47:53.9011488Z         "unit",
2026-06-21T04:47:53.9011599Z         "int"
2026-06-21T04:47:53.9011708Z       ],
2026-06-21T04:47:53.9011816Z       "stages": {
2026-06-21T04:47:53.9011921Z         "doc": {
2026-06-21T04:47:53.9012039Z           "complete": false,
2026-06-21T04:47:53.9012161Z           "evidence": []
2026-06-21T04:47:53.9012261Z         },
2026-06-21T04:47:53.9012367Z         "impl": {
2026-06-21T04:47:53.9012476Z           "complete": true,
2026-06-21T04:47:53.9012691Z           "evidence": [
2026-06-21T04:47:53.9012795Z             {
2026-06-21T04:47:53.9012954Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.9013067Z               "line": 925
2026-06-21T04:47:53.9013177Z             },
2026-06-21T04:47:53.9013287Z             {
2026-06-21T04:47:53.9013430Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.9013545Z               "line": 994
2026-06-21T04:47:53.9013649Z             }
2026-06-21T04:47:53.9013759Z           ]
2026-06-21T04:47:53.9013865Z         },
2026-06-21T04:47:53.9013955Z         "int": {
2026-06-21T04:47:53.9014175Z           "complete": true,
2026-06-21T04:47:53.9014284Z           "evidence": [
2026-06-21T04:47:53.9014392Z             {
2026-06-21T04:47:53.9014545Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T04:47:53.9014661Z               "line": 187
2026-06-21T04:47:53.9014761Z             },
2026-06-21T04:47:53.9014867Z             {
2026-06-21T04:47:53.9015019Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T04:47:53.9015128Z               "line": 348
2026-06-21T04:47:53.9015239Z             }
2026-06-21T04:47:53.9015338Z           ]
2026-06-21T04:47:53.9015439Z         },
2026-06-21T04:47:53.9015549Z         "unit": {
2026-06-21T04:47:53.9015653Z           "complete": true,
2026-06-21T04:47:53.9015763Z           "evidence": [
2026-06-21T04:47:53.9015863Z             {
2026-06-21T04:47:53.9016015Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.9016131Z               "line": 1206
2026-06-21T04:47:53.9016230Z             },
2026-06-21T04:47:53.9016344Z             {
2026-06-21T04:47:53.9016479Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9016592Z               "line": 8116
2026-06-21T04:47:53.9016698Z             }
2026-06-21T04:47:53.9016803Z           ]
2026-06-21T04:47:53.9016907Z         }
2026-06-21T04:47:53.9017013Z       }
2026-06-21T04:47:53.9017123Z     },
2026-06-21T04:47:53.9017216Z     {
2026-06-21T04:47:53.9017354Z       "id": "REQ-HAZARD-WORKER-PATH",
2026-06-21T04:47:53.9017565Z       "title": "Single source of truth for Worker/Psyche perch location (1.5)",
2026-06-21T04:47:53.9017688Z       "requiredStages": [
2026-06-21T04:47:53.9017794Z         "impl",
2026-06-21T04:47:53.9017898Z         "unit"
2026-06-21T04:47:53.9017998Z       ],
2026-06-21T04:47:53.9018104Z       "stages": {
2026-06-21T04:47:53.9018213Z         "doc": {
2026-06-21T04:47:53.9018332Z           "complete": false,
2026-06-21T04:47:53.9018447Z           "evidence": []
2026-06-21T04:47:53.9018546Z         },
2026-06-21T04:47:53.9018662Z         "impl": {
2026-06-21T04:47:53.9018780Z           "complete": true,
2026-06-21T04:47:53.9018885Z           "evidence": [
2026-06-21T04:47:53.9019077Z             {
2026-06-21T04:47:53.9019223Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:53.9019334Z               "line": 262
2026-06-21T04:47:53.9019443Z             },
2026-06-21T04:47:53.9019547Z             {
2026-06-21T04:47:53.9019695Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:53.9019802Z               "line": 307
2026-06-21T04:47:53.9019906Z             },
2026-06-21T04:47:53.9020008Z             {
2026-06-21T04:47:53.9020154Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:53.9020270Z               "line": 319
2026-06-21T04:47:53.9020374Z             }
2026-06-21T04:47:53.9020478Z           ]
2026-06-21T04:47:53.9020575Z         },
2026-06-21T04:47:53.9020684Z         "int": {
2026-06-21T04:47:53.9020798Z           "complete": false,
2026-06-21T04:47:53.9020909Z           "evidence": []
2026-06-21T04:47:53.9021023Z         },
2026-06-21T04:47:53.9021127Z         "unit": {
2026-06-21T04:47:53.9021247Z           "complete": true,
2026-06-21T04:47:53.9021356Z           "evidence": [
2026-06-21T04:47:53.9021466Z             {
2026-06-21T04:47:53.9021610Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:53.9021844Z               "line": 455
2026-06-21T04:47:53.9021944Z             },
2026-06-21T04:47:53.9022048Z             {
2026-06-21T04:47:53.9022202Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:53.9022305Z               "line": 499
2026-06-21T04:47:53.9022409Z             }
2026-06-21T04:47:53.9022509Z           ]
2026-06-21T04:47:53.9022618Z         }
2026-06-21T04:47:53.9022726Z       }
2026-06-21T04:47:53.9022817Z     },
2026-06-21T04:47:53.9022922Z     {
2026-06-21T04:47:53.9023041Z       "id": "REQ-HOST-RUN-1",
2026-06-21T04:47:53.9025584Z       "title": "spt-hosted harness bringup: `spt endpoint run` spawns an adapter's `[session.self]` command template into a broker-held PTY (the spawn-session seam, brain.rs spawn_session_pid — same broker path shellhost.rs launch_shell_brokered_in uses for shells, now for kind=\"harness\" self-role), registers the perch under the given endpoint id, returns the id. Reverses today's harness-hosted-only launch (external launcher → `api bind`). Non-interactive flag set (--adapter <a[:profile]> --id <id> --create --resume <session> --attach|--start|--view) covers every terminal action of the W2 interactive picker so shortcuts (cc-<id>) bake fully non-interactive launches; composite adapter:profile resolves via registry::resolve_option leaf-replace overlay.",
2026-06-21T04:47:53.9025813Z       "requiredStages": [
2026-06-21T04:47:53.9025908Z         "impl",
2026-06-21T04:47:53.9026018Z         "unit",
2026-06-21T04:47:53.9026123Z         "int"
2026-06-21T04:47:53.9026222Z       ],
2026-06-21T04:47:53.9026338Z       "stages": {
2026-06-21T04:47:53.9026442Z         "doc": {
2026-06-21T04:47:53.9026571Z           "complete": false,
2026-06-21T04:47:53.9026682Z           "evidence": []
2026-06-21T04:47:53.9026790Z         },
2026-06-21T04:47:53.9026895Z         "impl": {
2026-06-21T04:47:53.9027001Z           "complete": true,
2026-06-21T04:47:53.9027119Z           "evidence": [
2026-06-21T04:47:53.9027220Z             {
2026-06-21T04:47:53.9027396Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T04:47:53.9027510Z               "line": 30
2026-06-21T04:47:53.9027616Z             },
2026-06-21T04:47:53.9027753Z             {
2026-06-21T04:47:53.9027924Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T04:47:53.9028044Z               "line": 76
2026-06-21T04:47:53.9028148Z             },
2026-06-21T04:47:53.9028248Z             {
2026-06-21T04:47:53.9028402Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T04:47:53.9028505Z               "line": 181
2026-06-21T04:47:53.9028611Z             },
2026-06-21T04:47:53.9028716Z             {
2026-06-21T04:47:53.9028849Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9029035Z               "line": 1266
2026-06-21T04:47:53.9029135Z             }
2026-06-21T04:47:53.9029241Z           ]
2026-06-21T04:47:53.9029350Z         },
2026-06-21T04:47:53.9029450Z         "int": {
2026-06-21T04:47:53.9029566Z           "complete": true,
2026-06-21T04:47:53.9029683Z           "evidence": [
2026-06-21T04:47:53.9029783Z             {
2026-06-21T04:47:53.9029937Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T04:47:53.9030050Z               "line": 285
2026-06-21T04:47:53.9030149Z             }
2026-06-21T04:47:53.9030259Z           ]
2026-06-21T04:47:53.9030362Z         },
2026-06-21T04:47:53.9030466Z         "unit": {
2026-06-21T04:47:53.9030578Z           "complete": true,
2026-06-21T04:47:53.9030686Z           "evidence": [
2026-06-21T04:47:53.9030791Z             {
2026-06-21T04:47:53.9030949Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T04:47:53.9031077Z               "line": 229
2026-06-21T04:47:53.9031183Z             },
2026-06-21T04:47:53.9031292Z             {
2026-06-21T04:47:53.9031440Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T04:47:53.9031555Z               "line": 296
2026-06-21T04:47:53.9031664Z             },
2026-06-21T04:47:53.9031869Z             {
2026-06-21T04:47:53.9032026Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T04:47:53.9032132Z               "line": 419
2026-06-21T04:47:53.9032240Z             }
2026-06-21T04:47:53.9032350Z           ]
2026-06-21T04:47:53.9032452Z         }
2026-06-21T04:47:53.9032555Z       }
2026-06-21T04:47:53.9032660Z     },
2026-06-21T04:47:53.9032752Z     {
2026-06-21T04:47:53.9032866Z       "id": "REQ-HOST-RUN-2",
2026-06-21T04:47:53.9034689Z       "title": "Project-scoped working directory for spt-hosted bringup: `spt endpoint run` lands the broker-spawned harness PTY in the user's PROJECT cwd, not the daemon's, via an additive `SpawnReq.cwd` field carried through the broker PTY spawn (portable-pty CommandBuilder cwd). N-1-safe wire change (additive, defaulted). Required because the consumer (Claude Code) is project-scoped: broker-inherited cwd = the daemon's cwd = the wrong `.claude`, wrong session history, wrong digest source; `cc <id>` at a project root MUST land the harness in that project. W1 ships broker-inherited cwd as a bringup-proof shortcut only; this REQ must land before the M12 gate (doyle, 2026-06-14).",
2026-06-21T04:47:53.9034908Z       "requiredStages": [
2026-06-21T04:47:53.9035009Z         "impl",
2026-06-21T04:47:53.9035117Z         "unit",
2026-06-21T04:47:53.9035213Z         "int"
2026-06-21T04:47:53.9035319Z       ],
2026-06-21T04:47:53.9035427Z       "stages": {
2026-06-21T04:47:53.9035527Z         "doc": {
2026-06-21T04:47:53.9035650Z           "complete": false,
2026-06-21T04:47:53.9035754Z           "evidence": []
2026-06-21T04:47:53.9035853Z         },
2026-06-21T04:47:53.9035958Z         "impl": {
2026-06-21T04:47:53.9036078Z           "complete": true,
2026-06-21T04:47:53.9036196Z           "evidence": [
2026-06-21T04:47:53.9036298Z             {
2026-06-21T04:47:53.9036468Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T04:47:53.9036578Z               "line": 182
2026-06-21T04:47:53.9036683Z             },
2026-06-21T04:47:53.9036782Z             {
2026-06-21T04:47:53.9036927Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T04:47:53.9037045Z               "line": 113
2026-06-21T04:47:53.9037145Z             }
2026-06-21T04:47:53.9037247Z           ]
2026-06-21T04:47:53.9037345Z         },
2026-06-21T04:47:53.9037455Z         "int": {
2026-06-21T04:47:53.9037561Z           "complete": true,
2026-06-21T04:47:53.9037665Z           "evidence": [
2026-06-21T04:47:53.9037770Z             {
2026-06-21T04:47:53.9037910Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T04:47:53.9038022Z               "line": 572
2026-06-21T04:47:53.9038123Z             }
2026-06-21T04:47:53.9038229Z           ]
2026-06-21T04:47:53.9038336Z         },
2026-06-21T04:47:53.9038445Z         "unit": {
2026-06-21T04:47:53.9038566Z           "complete": true,
2026-06-21T04:47:53.9038670Z           "evidence": [
2026-06-21T04:47:53.9038780Z             {
2026-06-21T04:47:53.9038914Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T04:47:53.9039123Z               "line": 86
2026-06-21T04:47:53.9039224Z             }
2026-06-21T04:47:53.9039328Z           ]
2026-06-21T04:47:53.9039443Z         }
2026-06-21T04:47:53.9039553Z       }
2026-06-21T04:47:53.9039676Z     },
2026-06-21T04:47:53.9039782Z     {
2026-06-21T04:47:53.9039915Z       "id": "REQ-INFRA-1",
2026-06-21T04:47:53.9040126Z       "title": "GitHub issue tracking for v1; tangled.org as migration target",
2026-06-21T04:47:53.9040239Z       "requiredStages": [],
2026-06-21T04:47:53.9040344Z       "stages": {
2026-06-21T04:47:53.9040446Z         "doc": {
2026-06-21T04:47:53.9040563Z           "complete": false,
2026-06-21T04:47:53.9040681Z           "evidence": []
2026-06-21T04:47:53.9040786Z         },
2026-06-21T04:47:53.9040894Z         "impl": {
2026-06-21T04:47:53.9041017Z           "complete": false,
2026-06-21T04:47:53.9041143Z           "evidence": []
2026-06-21T04:47:53.9041252Z         },
2026-06-21T04:47:53.9041370Z         "int": {
2026-06-21T04:47:53.9041613Z           "complete": false,
2026-06-21T04:47:53.9041733Z           "evidence": []
2026-06-21T04:47:53.9041833Z         },
2026-06-21T04:47:53.9041937Z         "unit": {
2026-06-21T04:47:53.9042053Z           "complete": false,
2026-06-21T04:47:53.9042162Z           "evidence": []
2026-06-21T04:47:53.9042266Z         }
2026-06-21T04:47:53.9042368Z       }
2026-06-21T04:47:53.9042472Z     },
2026-06-21T04:47:53.9042572Z     {
2026-06-21T04:47:53.9042692Z       "id": "REQ-INST-1",
2026-06-21T04:47:53.9042887Z       "title": "endpoint ID vs instance split (adapter-agnostic ID)",
2026-06-21T04:47:53.9043012Z       "requiredStages": [],
2026-06-21T04:47:53.9043211Z       "stages": {
2026-06-21T04:47:53.9043313Z         "doc": {
2026-06-21T04:47:53.9043430Z           "complete": false,
2026-06-21T04:47:53.9043534Z           "evidence": []
2026-06-21T04:47:53.9043630Z         },
2026-06-21T04:47:53.9043743Z         "impl": {
2026-06-21T04:47:53.9043841Z           "complete": false,
2026-06-21T04:47:53.9043952Z           "evidence": []
2026-06-21T04:47:53.9044052Z         },
2026-06-21T04:47:53.9044151Z         "int": {
2026-06-21T04:47:53.9044272Z           "complete": false,
2026-06-21T04:47:53.9044381Z           "evidence": []
2026-06-21T04:47:53.9044480Z         },
2026-06-21T04:47:53.9044625Z         "unit": {
2026-06-21T04:47:53.9044776Z           "complete": false,
2026-06-21T04:47:53.9044881Z           "evidence": []
2026-06-21T04:47:53.9044982Z         }
2026-06-21T04:47:53.9045082Z       }
2026-06-21T04:47:53.9045182Z     },
2026-06-21T04:47:53.9045283Z     {
2026-06-21T04:47:53.9045396Z       "id": "REQ-INST-10",
2026-06-21T04:47:53.9045640Z       "title": "Qualified addressing [subnet:]id[@node] + ambiguity forces qualification",
2026-06-21T04:47:53.9045763Z       "requiredStages": [
2026-06-21T04:47:53.9045874Z         "impl",
2026-06-21T04:47:53.9045978Z         "unit"
2026-06-21T04:47:53.9046087Z       ],
2026-06-21T04:47:53.9046206Z       "stages": {
2026-06-21T04:47:53.9046314Z         "doc": {
2026-06-21T04:47:53.9046437Z           "complete": false,
2026-06-21T04:47:53.9046547Z           "evidence": []
2026-06-21T04:47:53.9046657Z         },
2026-06-21T04:47:53.9046761Z         "impl": {
2026-06-21T04:47:53.9046882Z           "complete": true,
2026-06-21T04:47:53.9046990Z           "evidence": [
2026-06-21T04:47:53.9047095Z             {
2026-06-21T04:47:53.9047253Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9047362Z               "line": 648
2026-06-21T04:47:53.9047473Z             },
2026-06-21T04:47:53.9047567Z             {
2026-06-21T04:47:53.9047720Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9047845Z               "line": 725
2026-06-21T04:47:53.9047940Z             },
2026-06-21T04:47:53.9048053Z             {
2026-06-21T04:47:53.9048197Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T04:47:53.9048301Z               "line": 13
2026-06-21T04:47:53.9048412Z             },
2026-06-21T04:47:53.9048517Z             {
2026-06-21T04:47:53.9048664Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T04:47:53.9048761Z               "line": 67
2026-06-21T04:47:53.9048869Z             },
2026-06-21T04:47:53.9049054Z             {
2026-06-21T04:47:53.9049184Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T04:47:53.9049283Z               "line": 18
2026-06-21T04:47:53.9049407Z             },
2026-06-21T04:47:53.9049522Z             {
2026-06-21T04:47:53.9049659Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T04:47:53.9049770Z               "line": 444
2026-06-21T04:47:53.9049865Z             }
2026-06-21T04:47:53.9049974Z           ]
2026-06-21T04:47:53.9050075Z         },
2026-06-21T04:47:53.9050184Z         "int": {
2026-06-21T04:47:53.9050303Z           "complete": false,
2026-06-21T04:47:53.9050413Z           "evidence": []
2026-06-21T04:47:53.9050518Z         },
2026-06-21T04:47:53.9050628Z         "unit": {
2026-06-21T04:47:53.9050747Z           "complete": true,
2026-06-21T04:47:53.9050967Z           "evidence": [
2026-06-21T04:47:53.9051076Z             {
2026-06-21T04:47:53.9051227Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9051337Z               "line": 932
2026-06-21T04:47:53.9051449Z             },
2026-06-21T04:47:53.9051553Z             {
2026-06-21T04:47:53.9051707Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9051807Z               "line": 1309
2026-06-21T04:47:53.9051916Z             },
2026-06-21T04:47:53.9052012Z             {
2026-06-21T04:47:53.9052159Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9052355Z               "line": 1320
2026-06-21T04:47:53.9052464Z             },
2026-06-21T04:47:53.9052570Z             {
2026-06-21T04:47:53.9052718Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9052826Z               "line": 1336
2026-06-21T04:47:53.9052938Z             },
2026-06-21T04:47:53.9053046Z             {
2026-06-21T04:47:53.9053195Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9053304Z               "line": 1352
2026-06-21T04:47:53.9053409Z             },
2026-06-21T04:47:53.9053505Z             {
2026-06-21T04:47:53.9053657Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9053762Z               "line": 1374
2026-06-21T04:47:53.9053868Z             },
2026-06-21T04:47:53.9053972Z             {
2026-06-21T04:47:53.9054118Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9054228Z               "line": 1679
2026-06-21T04:47:53.9054335Z             },
2026-06-21T04:47:53.9054454Z             {
2026-06-21T04:47:53.9054593Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T04:47:53.9054702Z               "line": 130
2026-06-21T04:47:53.9054812Z             },
2026-06-21T04:47:53.9054913Z             {
2026-06-21T04:47:53.9055059Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T04:47:53.9055170Z               "line": 167
2026-06-21T04:47:53.9055265Z             },
2026-06-21T04:47:53.9055383Z             {
2026-06-21T04:47:53.9055518Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T04:47:53.9055628Z               "line": 175
2026-06-21T04:47:53.9055732Z             },
2026-06-21T04:47:53.9055838Z             {
2026-06-21T04:47:53.9055980Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T04:47:53.9056081Z               "line": 183
2026-06-21T04:47:53.9056196Z             },
2026-06-21T04:47:53.9056300Z             {
2026-06-21T04:47:53.9056444Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T04:47:53.9056562Z               "line": 896
2026-06-21T04:47:53.9056670Z             }
2026-06-21T04:47:53.9056785Z           ]
2026-06-21T04:47:53.9056888Z         }
2026-06-21T04:47:53.9056997Z       }
2026-06-21T04:47:53.9057097Z     },
2026-06-21T04:47:53.9057203Z     {
2026-06-21T04:47:53.9057316Z       "id": "REQ-INST-11",
2026-06-21T04:47:53.9057565Z       "title": "spt rename <id> rippled to all instances (collision-checked, 6.5-reconciled)",
2026-06-21T04:47:53.9057694Z       "requiredStages": [
2026-06-21T04:47:53.9057799Z         "impl",
2026-06-21T04:47:53.9057908Z         "unit"
2026-06-21T04:47:53.9058014Z       ],
2026-06-21T04:47:53.9058123Z       "stages": {
2026-06-21T04:47:53.9058227Z         "doc": {
2026-06-21T04:47:53.9058343Z           "complete": false,
2026-06-21T04:47:53.9058456Z           "evidence": []
2026-06-21T04:47:53.9058556Z         },
2026-06-21T04:47:53.9058663Z         "impl": {
2026-06-21T04:47:53.9058776Z           "complete": true,
2026-06-21T04:47:53.9058885Z           "evidence": [
2026-06-21T04:47:53.9059082Z             {
2026-06-21T04:47:53.9059244Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9059378Z               "line": 514
2026-06-21T04:47:53.9059485Z             },
2026-06-21T04:47:53.9059595Z             {
2026-06-21T04:47:53.9059744Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T04:47:53.9060073Z               "line": 297
2026-06-21T04:47:53.9060176Z             },
2026-06-21T04:47:53.9060287Z             {
2026-06-21T04:47:53.9060434Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T04:47:53.9060544Z               "line": 59
2026-06-21T04:47:53.9060654Z             },
2026-06-21T04:47:53.9060754Z             {
2026-06-21T04:47:53.9060893Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9061002Z               "line": 5291
2026-06-21T04:47:53.9061111Z             },
2026-06-21T04:47:53.9061212Z             {
2026-06-21T04:47:53.9061340Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9061551Z               "line": 7137
2026-06-21T04:47:53.9061655Z             }
2026-06-21T04:47:53.9061754Z           ]
2026-06-21T04:47:53.9061858Z         },
2026-06-21T04:47:53.9061963Z         "int": {
2026-06-21T04:47:53.9062085Z           "complete": false,
2026-06-21T04:47:53.9062195Z           "evidence": []
2026-06-21T04:47:53.9062306Z         },
2026-06-21T04:47:53.9062405Z         "unit": {
2026-06-21T04:47:53.9062524Z           "complete": true,
2026-06-21T04:47:53.9062630Z           "evidence": [
2026-06-21T04:47:53.9062739Z             {
2026-06-21T04:47:53.9062887Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9062996Z               "line": 1479
2026-06-21T04:47:53.9063106Z             },
2026-06-21T04:47:53.9063206Z             {
2026-06-21T04:47:53.9063363Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9063469Z               "line": 1512
2026-06-21T04:47:53.9063578Z             },
2026-06-21T04:47:53.9063688Z             {
2026-06-21T04:47:53.9063836Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T04:47:53.9063950Z               "line": 527
2026-06-21T04:47:53.9064050Z             },
2026-06-21T04:47:53.9064156Z             {
2026-06-21T04:47:53.9064298Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T04:47:53.9064418Z               "line": 160
2026-06-21T04:47:53.9064527Z             },
2026-06-21T04:47:53.9064631Z             {
2026-06-21T04:47:53.9064783Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T04:47:53.9064895Z               "line": 190
2026-06-21T04:47:53.9065000Z             },
2026-06-21T04:47:53.9065105Z             {
2026-06-21T04:47:53.9065258Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T04:47:53.9065377Z               "line": 225
2026-06-21T04:47:53.9065478Z             },
2026-06-21T04:47:53.9065582Z             {
2026-06-21T04:47:53.9065712Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9065835Z               "line": 7994
2026-06-21T04:47:53.9065939Z             }
2026-06-21T04:47:53.9066046Z           ]
2026-06-21T04:47:53.9066154Z         }
2026-06-21T04:47:53.9066254Z       }
2026-06-21T04:47:53.9066370Z     },
2026-06-21T04:47:53.9066469Z     {
2026-06-21T04:47:53.9066583Z       "id": "REQ-INST-12",
2026-06-21T04:47:53.9066902Z       "title": "Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + override, gates sync",
2026-06-21T04:47:53.9067018Z       "requiredStages": [
2026-06-21T04:47:53.9067131Z         "impl",
2026-06-21T04:47:53.9067235Z         "unit"
2026-06-21T04:47:53.9067345Z       ],
2026-06-21T04:47:53.9067453Z       "stages": {
2026-06-21T04:47:53.9067562Z         "doc": {
2026-06-21T04:47:53.9067682Z           "complete": false,
2026-06-21T04:47:53.9067801Z           "evidence": []
2026-06-21T04:47:53.9067910Z         },
2026-06-21T04:47:53.9068016Z         "impl": {
2026-06-21T04:47:53.9068139Z           "complete": true,
2026-06-21T04:47:53.9068244Z           "evidence": [
2026-06-21T04:47:53.9068354Z             {
2026-06-21T04:47:53.9068496Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9068612Z               "line": 566
2026-06-21T04:47:53.9068716Z             },
2026-06-21T04:47:53.9068821Z             {
2026-06-21T04:47:53.9069130Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9069237Z               "line": 659
2026-06-21T04:47:53.9069336Z             },
2026-06-21T04:47:53.9069441Z             {
2026-06-21T04:47:53.9069590Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9069698Z               "line": 739
2026-06-21T04:47:53.9069799Z             },
2026-06-21T04:47:53.9069895Z             {
2026-06-21T04:47:53.9070036Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T04:47:53.9070140Z               "line": 96
2026-06-21T04:47:53.9070251Z             },
2026-06-21T04:47:53.9070351Z             {
2026-06-21T04:47:53.9070618Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T04:47:53.9070732Z               "line": 269
2026-06-21T04:47:53.9070838Z             },
2026-06-21T04:47:53.9070942Z             {
2026-06-21T04:47:53.9071104Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T04:47:53.9071219Z               "line": 148
2026-06-21T04:47:53.9071310Z             }
2026-06-21T04:47:53.9071418Z           ]
2026-06-21T04:47:53.9071525Z         },
2026-06-21T04:47:53.9071634Z         "int": {
2026-06-21T04:47:53.9071738Z           "complete": false,
2026-06-21T04:47:53.9071849Z           "evidence": []
2026-06-21T04:47:53.9071952Z         },
2026-06-21T04:47:53.9072058Z         "unit": {
2026-06-21T04:47:53.9072183Z           "complete": true,
2026-06-21T04:47:53.9072295Z           "evidence": [
2026-06-21T04:47:53.9072405Z             {
2026-06-21T04:47:53.9072556Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9072669Z               "line": 1554
2026-06-21T04:47:53.9072784Z             },
2026-06-21T04:47:53.9072889Z             {
2026-06-21T04:47:53.9073032Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9073137Z               "line": 1577
2026-06-21T04:47:53.9073246Z             },
2026-06-21T04:47:53.9073346Z             {
2026-06-21T04:47:53.9073504Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9073613Z               "line": 1614
2026-06-21T04:47:53.9073719Z             },
2026-06-21T04:47:53.9073828Z             {
2026-06-21T04:47:53.9073961Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T04:47:53.9074077Z               "line": 457
2026-06-21T04:47:53.9074181Z             },
2026-06-21T04:47:53.9074286Z             {
2026-06-21T04:47:53.9074438Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T04:47:53.9074539Z               "line": 185
2026-06-21T04:47:53.9074649Z             },
2026-06-21T04:47:53.9074753Z             {
2026-06-21T04:47:53.9074906Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T04:47:53.9075017Z               "line": 206
2026-06-21T04:47:53.9075124Z             },
2026-06-21T04:47:53.9075233Z             {
2026-06-21T04:47:53.9075386Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T04:47:53.9075503Z               "line": 232
2026-06-21T04:47:53.9075603Z             }
2026-06-21T04:47:53.9075704Z           ]
2026-06-21T04:47:53.9075799Z         }
2026-06-21T04:47:53.9075903Z       }
2026-06-21T04:47:53.9076014Z     },
2026-06-21T04:47:53.9076118Z     {
2026-06-21T04:47:53.9076238Z       "id": "REQ-INST-13",
2026-06-21T04:47:53.9076452Z       "title": "Subnet-exclusive sync + per-endpoint subnet-membership list",
2026-06-21T04:47:53.9076581Z       "requiredStages": [
2026-06-21T04:47:53.9076690Z         "impl",
2026-06-21T04:47:53.9076810Z         "unit"
2026-06-21T04:47:53.9076911Z       ],
2026-06-21T04:47:53.9077019Z       "stages": {
2026-06-21T04:47:53.9077129Z         "doc": {
2026-06-21T04:47:53.9077250Z           "complete": false,
2026-06-21T04:47:53.9077358Z           "evidence": []
2026-06-21T04:47:53.9077463Z         },
2026-06-21T04:47:53.9077579Z         "impl": {
2026-06-21T04:47:53.9077701Z           "complete": true,
2026-06-21T04:47:53.9077810Z           "evidence": [
2026-06-21T04:47:53.9078013Z             {
2026-06-21T04:47:53.9078160Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T04:47:53.9078271Z               "line": 100
2026-06-21T04:47:53.9078371Z             },
2026-06-21T04:47:53.9078480Z             {
2026-06-21T04:47:53.9078633Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T04:47:53.9078741Z               "line": 171
2026-06-21T04:47:53.9078848Z             }
2026-06-21T04:47:53.9079033Z           ]
2026-06-21T04:47:53.9079139Z         },
2026-06-21T04:47:53.9079239Z         "int": {
2026-06-21T04:47:53.9079357Z           "complete": false,
2026-06-21T04:47:53.9079478Z           "evidence": []
2026-06-21T04:47:53.9079672Z         },
2026-06-21T04:47:53.9079783Z         "unit": {
2026-06-21T04:47:53.9079891Z           "complete": true,
2026-06-21T04:47:53.9080001Z           "evidence": [
2026-06-21T04:47:53.9080103Z             {
2026-06-21T04:47:53.9080254Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T04:47:53.9080364Z               "line": 261
2026-06-21T04:47:53.9080460Z             },
2026-06-21T04:47:53.9080559Z             {
2026-06-21T04:47:53.9080710Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T04:47:53.9080821Z               "line": 279
2026-06-21T04:47:53.9080921Z             }
2026-06-21T04:47:53.9081011Z           ]
2026-06-21T04:47:53.9081107Z         }
2026-06-21T04:47:53.9081207Z       }
2026-06-21T04:47:53.9081316Z     },
2026-06-21T04:47:53.9081412Z     {
2026-06-21T04:47:53.9081527Z       "id": "REQ-INST-14",
2026-06-21T04:47:53.9081940Z       "title": "Resource advertisement (subnet resource registry): free-text blurb, both-authored, registry projection, visibility/whitelist-gated",
2026-06-21T04:47:53.9082051Z       "requiredStages": [
2026-06-21T04:47:53.9082160Z         "doc",
2026-06-21T04:47:53.9082269Z         "impl",
2026-06-21T04:47:53.9082380Z         "unit"
2026-06-21T04:47:53.9082479Z       ],
2026-06-21T04:47:53.9082584Z       "stages": {
2026-06-21T04:47:53.9082700Z         "doc": {
2026-06-21T04:47:53.9082808Z           "complete": true,
2026-06-21T04:47:53.9082908Z           "evidence": [
2026-06-21T04:47:53.9083012Z             {
2026-06-21T04:47:53.9083130Z               "path": "CONTEXT.md",
2026-06-21T04:47:53.9083239Z               "line": 588
2026-06-21T04:47:53.9083344Z             },
2026-06-21T04:47:53.9083454Z             {
2026-06-21T04:47:53.9083582Z               "path": "docs/STORAGE.md",
2026-06-21T04:47:53.9083693Z               "line": 49
2026-06-21T04:47:53.9083792Z             }
2026-06-21T04:47:53.9083897Z           ]
2026-06-21T04:47:53.9083998Z         },
2026-06-21T04:47:53.9084107Z         "impl": {
2026-06-21T04:47:53.9084216Z           "complete": true,
2026-06-21T04:47:53.9084337Z           "evidence": [
2026-06-21T04:47:53.9084450Z             {
2026-06-21T04:47:53.9084608Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.9084717Z               "line": 410
2026-06-21T04:47:53.9084822Z             },
2026-06-21T04:47:53.9084933Z             {
2026-06-21T04:47:53.9085089Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9085200Z               "line": 367
2026-06-21T04:47:53.9085309Z             },
2026-06-21T04:47:53.9088836Z             {
2026-06-21T04:47:53.9089112Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T04:47:53.9089222Z               "line": 293
2026-06-21T04:47:53.9089345Z             },
2026-06-21T04:47:53.9089460Z             {
2026-06-21T04:47:53.9089607Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9089728Z               "line": 1577
2026-06-21T04:47:53.9089827Z             }
2026-06-21T04:47:53.9089946Z           ]
2026-06-21T04:47:53.9090048Z         },
2026-06-21T04:47:53.9090151Z         "int": {
2026-06-21T04:47:53.9090275Z           "complete": false,
2026-06-21T04:47:53.9090381Z           "evidence": []
2026-06-21T04:47:53.9090494Z         },
2026-06-21T04:47:53.9090594Z         "unit": {
2026-06-21T04:47:53.9090837Z           "complete": true,
2026-06-21T04:47:53.9090948Z           "evidence": [
2026-06-21T04:47:53.9091053Z             {
2026-06-21T04:47:53.9091227Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.9091333Z               "line": 1163
2026-06-21T04:47:53.9091438Z             },
2026-06-21T04:47:53.9091537Z             {
2026-06-21T04:47:53.9091691Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9091791Z               "line": 944
2026-06-21T04:47:53.9091900Z             },
2026-06-21T04:47:53.9091996Z             {
2026-06-21T04:47:53.9092153Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9092368Z               "line": 1205
2026-06-21T04:47:53.9092477Z             },
2026-06-21T04:47:53.9092583Z             {
2026-06-21T04:47:53.9092729Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T04:47:53.9092844Z               "line": 659
2026-06-21T04:47:53.9092950Z             },
2026-06-21T04:47:53.9093054Z             {
2026-06-21T04:47:53.9093188Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9093307Z               "line": 8070
2026-06-21T04:47:53.9093415Z             }
2026-06-21T04:47:53.9093515Z           ]
2026-06-21T04:47:53.9093625Z         }
2026-06-21T04:47:53.9093732Z       }
2026-06-21T04:47:53.9093832Z     },
2026-06-21T04:47:53.9093938Z     {
2026-06-21T04:47:53.9094047Z       "id": "REQ-INST-15",
2026-06-21T04:47:53.9094835Z       "title": "Immutable home subnet (assigned at creation: auto-if-one/ask-if-many) + spt fork (cross-subnet clone to a new identity, copy-then-diverge, not re-home); adapter chosen at creation from registered hostable adapters, changed only via launch/resume-under-new (ADR-0010)",
2026-06-21T04:47:53.9094958Z       "requiredStages": [
2026-06-21T04:47:53.9095053Z         "doc",
2026-06-21T04:47:53.9095164Z         "impl",
2026-06-21T04:47:53.9095263Z         "unit"
2026-06-21T04:47:53.9095372Z       ],
2026-06-21T04:47:53.9095479Z       "stages": {
2026-06-21T04:47:53.9095592Z         "doc": {
2026-06-21T04:47:53.9095701Z           "complete": true,
2026-06-21T04:47:53.9095813Z           "evidence": [
2026-06-21T04:47:53.9095921Z             {
2026-06-21T04:47:53.9096137Z               "path": "docs/adr/0010-immutable-home-subnet-fork-not-rehome.md",
2026-06-21T04:47:53.9096254Z               "line": 3
2026-06-21T04:47:53.9096358Z             }
2026-06-21T04:47:53.9096468Z           ]
2026-06-21T04:47:53.9096576Z         },
2026-06-21T04:47:53.9096680Z         "impl": {
2026-06-21T04:47:53.9096801Z           "complete": true,
2026-06-21T04:47:53.9096905Z           "evidence": [
2026-06-21T04:47:53.9097014Z             {
2026-06-21T04:47:53.9097187Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.9097300Z               "line": 353
2026-06-21T04:47:53.9097406Z             },
2026-06-21T04:47:53.9097501Z             {
2026-06-21T04:47:53.9097639Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T04:47:53.9097783Z               "line": 60
2026-06-21T04:47:53.9097892Z             },
2026-06-21T04:47:53.9098002Z             {
2026-06-21T04:47:53.9098163Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T04:47:53.9098274Z               "line": 368
2026-06-21T04:47:53.9098379Z             },
2026-06-21T04:47:53.9098482Z             {
2026-06-21T04:47:53.9098637Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T04:47:53.9098751Z               "line": 417
2026-06-21T04:47:53.9098859Z             },
2026-06-21T04:47:53.9099049Z             {
2026-06-21T04:47:53.9099200Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T04:47:53.9099300Z               "line": 19
2026-06-21T04:47:53.9099415Z             },
2026-06-21T04:47:53.9099524Z             {
2026-06-21T04:47:53.9099668Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T04:47:53.9099772Z               "line": 70
2026-06-21T04:47:53.9099881Z             },
2026-06-21T04:47:53.9100082Z             {
2026-06-21T04:47:53.9100235Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T04:47:53.9100335Z               "line": 96
2026-06-21T04:47:53.9100435Z             },
2026-06-21T04:47:53.9100544Z             {
2026-06-21T04:47:53.9100683Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T04:47:53.9100802Z               "line": 121
2026-06-21T04:47:53.9100908Z             },
2026-06-21T04:47:53.9100997Z             {
2026-06-21T04:47:53.9101141Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T04:47:53.9101247Z               "line": 172
2026-06-21T04:47:53.9101354Z             },
2026-06-21T04:47:53.9101460Z             {
2026-06-21T04:47:53.9101707Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:53.9101816Z               "line": 178
2026-06-21T04:47:53.9101907Z             },
2026-06-21T04:47:53.9102017Z             {
2026-06-21T04:47:53.9102150Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9102261Z               "line": 1469
2026-06-21T04:47:53.9102360Z             }
2026-06-21T04:47:53.9102460Z           ]
2026-06-21T04:47:53.9102561Z         },
2026-06-21T04:47:53.9102666Z         "int": {
2026-06-21T04:47:53.9102780Z           "complete": false,
2026-06-21T04:47:53.9102890Z           "evidence": []
2026-06-21T04:47:53.9102999Z         },
2026-06-21T04:47:53.9103104Z         "unit": {
2026-06-21T04:47:53.9103224Z           "complete": true,
2026-06-21T04:47:53.9103333Z           "evidence": [
2026-06-21T04:47:53.9103438Z             {
2026-06-21T04:47:53.9103595Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T04:47:53.9103709Z               "line": 577
2026-06-21T04:47:53.9103816Z             },
2026-06-21T04:47:53.9103924Z             {
2026-06-21T04:47:53.9104075Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T04:47:53.9104190Z               "line": 638
2026-06-21T04:47:53.9104279Z             },
2026-06-21T04:47:53.9104383Z             {
2026-06-21T04:47:53.9104517Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T04:47:53.9104626Z               "line": 213
2026-06-21T04:47:53.9104736Z             },
2026-06-21T04:47:53.9104837Z             {
2026-06-21T04:47:53.9104983Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T04:47:53.9105080Z               "line": 249
2026-06-21T04:47:53.9105184Z             },
2026-06-21T04:47:53.9105289Z             {
2026-06-21T04:47:53.9105419Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T04:47:53.9105533Z               "line": 262
2026-06-21T04:47:53.9105637Z             },
2026-06-21T04:47:53.9105743Z             {
2026-06-21T04:47:53.9105876Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T04:47:53.9105981Z               "line": 338
2026-06-21T04:47:53.9106087Z             },
2026-06-21T04:47:53.9106190Z             {
2026-06-21T04:47:53.9106340Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:53.9106448Z               "line": 690
2026-06-21T04:47:53.9106562Z             },
2026-06-21T04:47:53.9106669Z             {
2026-06-21T04:47:53.9106810Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9106924Z               "line": 8007
2026-06-21T04:47:53.9107033Z             },
2026-06-21T04:47:53.9107136Z             {
2026-06-21T04:47:53.9107259Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9107375Z               "line": 9837
2026-06-21T04:47:53.9107475Z             }
2026-06-21T04:47:53.9107584Z           ]
2026-06-21T04:47:53.9107685Z         }
2026-06-21T04:47:53.9107785Z       }
2026-06-21T04:47:53.9107894Z     },
2026-06-21T04:47:53.9107995Z     {
2026-06-21T04:47:53.9108123Z       "id": "REQ-INST-2",
2026-06-21T04:47:53.9108267Z       "title": "Per-node files, synced Psyche mind",
2026-06-21T04:47:53.9108385Z       "requiredStages": [
2026-06-21T04:47:53.9108495Z         "impl",
2026-06-21T04:47:53.9108601Z         "unit"
2026-06-21T04:47:53.9108700Z       ],
2026-06-21T04:47:53.9108809Z       "stages": {
2026-06-21T04:47:53.9109076Z         "doc": {
2026-06-21T04:47:53.9109187Z           "complete": false,
2026-06-21T04:47:53.9109307Z           "evidence": []
2026-06-21T04:47:53.9109409Z         },
2026-06-21T04:47:53.9109514Z         "impl": {
2026-06-21T04:47:53.9109633Z           "complete": true,
2026-06-21T04:47:53.9109736Z           "evidence": [
2026-06-21T04:47:53.9109841Z             {
2026-06-21T04:47:53.9109999Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:53.9110113Z               "line": 108
2026-06-21T04:47:53.9110214Z             },
2026-06-21T04:47:53.9110319Z             {
2026-06-21T04:47:53.9110470Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T04:47:53.9110694Z               "line": 28
2026-06-21T04:47:53.9110814Z             },
2026-06-21T04:47:53.9110919Z             {
2026-06-21T04:47:53.9111071Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T04:47:53.9111182Z               "line": 74
2026-06-21T04:47:53.9111286Z             },
2026-06-21T04:47:53.9111386Z             {
2026-06-21T04:47:53.9111525Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T04:47:53.9111639Z               "line": 96
2026-06-21T04:47:53.9111744Z             },
2026-06-21T04:47:53.9111849Z             {
2026-06-21T04:47:53.9111982Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T04:47:53.9112093Z               "line": 86
2026-06-21T04:47:53.9112197Z             },
2026-06-21T04:47:53.9112301Z             {
2026-06-21T04:47:53.9112449Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T04:47:53.9112558Z               "line": 118
2026-06-21T04:47:53.9112662Z             }
2026-06-21T04:47:53.9112773Z           ]
2026-06-21T04:47:53.9112878Z         },
2026-06-21T04:47:53.9112987Z         "int": {
2026-06-21T04:47:53.9113102Z           "complete": false,
2026-06-21T04:47:53.9113207Z           "evidence": []
2026-06-21T04:47:53.9113311Z         },
2026-06-21T04:47:53.9113422Z         "unit": {
2026-06-21T04:47:53.9113535Z           "complete": true,
2026-06-21T04:47:53.9113654Z           "evidence": [
2026-06-21T04:47:53.9113755Z             {
2026-06-21T04:47:53.9113888Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T04:47:53.9113999Z               "line": 250
2026-06-21T04:47:53.9114108Z             },
2026-06-21T04:47:53.9114207Z             {
2026-06-21T04:47:53.9114337Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T04:47:53.9114451Z               "line": 280
2026-06-21T04:47:53.9114554Z             }
2026-06-21T04:47:53.9114659Z           ]
2026-06-21T04:47:53.9114768Z         }
2026-06-21T04:47:53.9114872Z       }
2026-06-21T04:47:53.9114982Z     },
2026-06-21T04:47:53.9115078Z     {
2026-06-21T04:47:53.9115196Z       "id": "REQ-INST-3",
2026-06-21T04:47:53.9115388Z       "title": "Dormant (warm) / suspended (cold) resting states",
2026-06-21T04:47:53.9115501Z       "requiredStages": [
2026-06-21T04:47:53.9115606Z         "doc",
2026-06-21T04:47:53.9115716Z         "impl",
2026-06-21T04:47:53.9115830Z         "unit"
2026-06-21T04:47:53.9115936Z       ],
2026-06-21T04:47:53.9116050Z       "stages": {
2026-06-21T04:47:53.9116159Z         "doc": {
2026-06-21T04:47:53.9116280Z           "complete": true,
2026-06-21T04:47:53.9116393Z           "evidence": [
2026-06-21T04:47:53.9116497Z             {
2026-06-21T04:47:53.9116642Z               "path": "docs/DORMANCY-BUDGET.md",
2026-06-21T04:47:53.9116755Z               "line": 3
2026-06-21T04:47:53.9116866Z             }
2026-06-21T04:47:53.9116966Z           ]
2026-06-21T04:47:53.9117065Z         },
2026-06-21T04:47:53.9117171Z         "impl": {
2026-06-21T04:47:53.9117286Z           "complete": true,
2026-06-21T04:47:53.9117403Z           "evidence": [
2026-06-21T04:47:53.9117507Z             {
2026-06-21T04:47:53.9117664Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T04:47:53.9117777Z               "line": 59
2026-06-21T04:47:53.9117878Z             },
2026-06-21T04:47:53.9117988Z             {
2026-06-21T04:47:53.9118236Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T04:47:53.9118340Z               "line": 480
2026-06-21T04:47:53.9118449Z             },
2026-06-21T04:47:53.9118550Z             {
2026-06-21T04:47:53.9118707Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:53.9118817Z               "line": 254
2026-06-21T04:47:53.9118927Z             },
2026-06-21T04:47:53.9119112Z             {
2026-06-21T04:47:53.9119260Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:53.9119369Z               "line": 384
2026-06-21T04:47:53.9119471Z             },
2026-06-21T04:47:53.9119675Z             {
2026-06-21T04:47:53.9119824Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:53.9119932Z               "line": 418
2026-06-21T04:47:53.9120036Z             },
2026-06-21T04:47:53.9120146Z             {
2026-06-21T04:47:53.9120291Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-21T04:47:53.9120401Z               "line": 74
2026-06-21T04:47:53.9120511Z             },
2026-06-21T04:47:53.9120611Z             {
2026-06-21T04:47:53.9120774Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.9120879Z               "line": 234
2026-06-21T04:47:53.9120982Z             },
2026-06-21T04:47:53.9121084Z             {
2026-06-21T04:47:53.9121236Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.9121340Z               "line": 396
2026-06-21T04:47:53.9121446Z             },
2026-06-21T04:47:53.9121551Z             {
2026-06-21T04:47:53.9121699Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T04:47:53.9121822Z               "line": 45
2026-06-21T04:47:53.9121922Z             },
2026-06-21T04:47:53.9122023Z             {
2026-06-21T04:47:53.9122174Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T04:47:53.9122280Z               "line": 114
2026-06-21T04:47:53.9122391Z             },
2026-06-21T04:47:53.9122484Z             {
2026-06-21T04:47:53.9122634Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T04:47:53.9122748Z               "line": 152
2026-06-21T04:47:53.9122851Z             },
2026-06-21T04:47:53.9122961Z             {
2026-06-21T04:47:53.9123100Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T04:47:53.9123213Z               "line": 168
2026-06-21T04:47:53.9123299Z             },
2026-06-21T04:47:53.9123404Z             {
2026-06-21T04:47:53.9123552Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T04:47:53.9123663Z               "line": 178
2026-06-21T04:47:53.9123772Z             },
2026-06-21T04:47:53.9123876Z             {
2026-06-21T04:47:53.9124019Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T04:47:53.9124119Z               "line": 210
2026-06-21T04:47:53.9124214Z             },
2026-06-21T04:47:53.9124325Z             {
2026-06-21T04:47:53.9124458Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T04:47:53.9124573Z               "line": 287
2026-06-21T04:47:53.9124673Z             },
2026-06-21T04:47:53.9124782Z             {
2026-06-21T04:47:53.9124922Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T04:47:53.9125034Z               "line": 311
2026-06-21T04:47:53.9125143Z             },
2026-06-21T04:47:53.9125244Z             {
2026-06-21T04:47:53.9125384Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T04:47:53.9125493Z               "line": 389
2026-06-21T04:47:53.9125599Z             },
2026-06-21T04:47:53.9125699Z             {
2026-06-21T04:47:53.9125851Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T04:47:53.9125967Z               "line": 438
2026-06-21T04:47:53.9126071Z             },
2026-06-21T04:47:53.9126181Z             {
2026-06-21T04:47:53.9126329Z               "path": "crates/spt-daemon/tests/budget.rs",
2026-06-21T04:47:53.9126447Z               "line": 37
2026-06-21T04:47:53.9126558Z             },
2026-06-21T04:47:53.9126752Z             {
2026-06-21T04:47:53.9126910Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9127020Z               "line": 62
2026-06-21T04:47:53.9127125Z             },
2026-06-21T04:47:53.9127230Z             {
2026-06-21T04:47:53.9127378Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T04:47:53.9127493Z               "line": 279
2026-06-21T04:47:53.9127596Z             },
2026-06-21T04:47:53.9127693Z             {
2026-06-21T04:47:53.9127813Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9127921Z               "line": 1848
2026-06-21T04:47:53.9128024Z             }
2026-06-21T04:47:53.9128210Z           ]
2026-06-21T04:47:53.9128318Z         },
2026-06-21T04:47:53.9128428Z         "int": {
2026-06-21T04:47:53.9128548Z           "complete": false,
2026-06-21T04:47:53.9128647Z           "evidence": []
2026-06-21T04:47:53.9128758Z         },
2026-06-21T04:47:53.9128862Z         "unit": {
2026-06-21T04:47:53.9129063Z           "complete": true,
2026-06-21T04:47:53.9129177Z           "evidence": [
2026-06-21T04:47:53.9129281Z             {
2026-06-21T04:47:53.9129454Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T04:47:53.9129572Z               "line": 360
2026-06-21T04:47:53.9129668Z             },
2026-06-21T04:47:53.9129773Z             {
2026-06-21T04:47:53.9129925Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:53.9130041Z               "line": 837
2026-06-21T04:47:53.9130135Z             },
2026-06-21T04:47:53.9130249Z             {
2026-06-21T04:47:53.9130398Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:53.9130511Z               "line": 894
2026-06-21T04:47:53.9130606Z             },
2026-06-21T04:47:53.9130715Z             {
2026-06-21T04:47:53.9130866Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T04:47:53.9130971Z               "line": 889
2026-06-21T04:47:53.9131076Z             },
2026-06-21T04:47:53.9131185Z             {
2026-06-21T04:47:53.9131334Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T04:47:53.9131444Z               "line": 1014
2026-06-21T04:47:53.9131552Z             },
2026-06-21T04:47:53.9131658Z             {
2026-06-21T04:47:53.9131810Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.9131920Z               "line": 1264
2026-06-21T04:47:53.9132020Z             },
2026-06-21T04:47:53.9132125Z             {
2026-06-21T04:47:53.9132278Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.9132396Z               "line": 1405
2026-06-21T04:47:53.9132501Z             },
2026-06-21T04:47:53.9132602Z             {
2026-06-21T04:47:53.9132759Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T04:47:53.9132869Z               "line": 449
2026-06-21T04:47:53.9132975Z             },
2026-06-21T04:47:53.9133073Z             {
2026-06-21T04:47:53.9133223Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T04:47:53.9133336Z               "line": 485
2026-06-21T04:47:53.9133435Z             },
2026-06-21T04:47:53.9133540Z             {
2026-06-21T04:47:53.9133674Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T04:47:53.9133783Z               "line": 540
2026-06-21T04:47:53.9133893Z             },
2026-06-21T04:47:53.9133989Z             {
2026-06-21T04:47:53.9134140Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T04:47:53.9134247Z               "line": 697
2026-06-21T04:47:53.9134360Z             },
2026-06-21T04:47:53.9134465Z             {
2026-06-21T04:47:53.9134613Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T04:47:53.9134731Z               "line": 931
2026-06-21T04:47:53.9134833Z             },
2026-06-21T04:47:53.9134937Z             {
2026-06-21T04:47:53.9135085Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T04:47:53.9135191Z               "line": 945
2026-06-21T04:47:53.9135390Z             },
2026-06-21T04:47:53.9135506Z             {
2026-06-21T04:47:53.9135656Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9135756Z               "line": 1290
2026-06-21T04:47:53.9135870Z             },
2026-06-21T04:47:53.9135973Z             {
2026-06-21T04:47:53.9136126Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T04:47:53.9136231Z               "line": 609
2026-06-21T04:47:53.9136340Z             },
2026-06-21T04:47:53.9136445Z             {
2026-06-21T04:47:53.9136574Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9136692Z               "line": 8031
2026-06-21T04:47:53.9136794Z             }
2026-06-21T04:47:53.9137002Z           ]
2026-06-21T04:47:53.9137109Z         }
2026-06-21T04:47:53.9137222Z       }
2026-06-21T04:47:53.9137327Z     },
2026-06-21T04:47:53.9137424Z     {
2026-06-21T04:47:53.9137542Z       "id": "REQ-INST-4",
2026-06-21T04:47:53.9137739Z       "title": "active to dormant/suspended fires a transition echo commune",
2026-06-21T04:47:53.9137851Z       "requiredStages": [
2026-06-21T04:47:53.9137957Z         "impl",
2026-06-21T04:47:53.9138068Z         "unit"
2026-06-21T04:47:53.9138171Z       ],
2026-06-21T04:47:53.9138281Z       "stages": {
2026-06-21T04:47:53.9138392Z         "doc": {
2026-06-21T04:47:53.9138500Z           "complete": false,
2026-06-21T04:47:53.9138623Z           "evidence": []
2026-06-21T04:47:53.9138728Z         },
2026-06-21T04:47:53.9138836Z         "impl": {
2026-06-21T04:47:53.9139027Z           "complete": true,
2026-06-21T04:47:53.9139131Z           "evidence": [
2026-06-21T04:47:53.9139245Z             {
2026-06-21T04:47:53.9139403Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:53.9139522Z               "line": 385
2026-06-21T04:47:53.9139623Z             },
2026-06-21T04:47:53.9139728Z             {
2026-06-21T04:47:53.9139879Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T04:47:53.9139990Z               "line": 202
2026-06-21T04:47:53.9140099Z             },
2026-06-21T04:47:53.9140204Z             {
2026-06-21T04:47:53.9140352Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T04:47:53.9140461Z               "line": 234
2026-06-21T04:47:53.9140572Z             },
2026-06-21T04:47:53.9140677Z             {
2026-06-21T04:47:53.9140824Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T04:47:53.9140939Z               "line": 274
2026-06-21T04:47:53.9141038Z             }
2026-06-21T04:47:53.9141142Z           ]
2026-06-21T04:47:53.9141243Z         },
2026-06-21T04:47:53.9141341Z         "int": {
2026-06-21T04:47:53.9141459Z           "complete": false,
2026-06-21T04:47:53.9141574Z           "evidence": []
2026-06-21T04:47:53.9141684Z         },
2026-06-21T04:47:53.9141788Z         "unit": {
2026-06-21T04:47:53.9141913Z           "complete": true,
2026-06-21T04:47:53.9142023Z           "evidence": [
2026-06-21T04:47:53.9142127Z             {
2026-06-21T04:47:53.9142285Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:53.9142403Z               "line": 889
2026-06-21T04:47:53.9142510Z             },
2026-06-21T04:47:53.9142618Z             {
2026-06-21T04:47:53.9142766Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T04:47:53.9142881Z               "line": 561
2026-06-21T04:47:53.9143000Z             },
2026-06-21T04:47:53.9143109Z             {
2026-06-21T04:47:53.9143252Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T04:47:53.9143362Z               "line": 668
2026-06-21T04:47:53.9143464Z             },
2026-06-21T04:47:53.9143567Z             {
2026-06-21T04:47:53.9143700Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T04:47:53.9143816Z               "line": 750
2026-06-21T04:47:53.9143924Z             }
2026-06-21T04:47:53.9144023Z           ]
2026-06-21T04:47:53.9144129Z         }
2026-06-21T04:47:53.9144235Z       }
2026-06-21T04:47:53.9144343Z     },
2026-06-21T04:47:53.9144443Z     {
2026-06-21T04:47:53.9144730Z       "id": "REQ-INST-5",
2026-06-21T04:47:53.9144972Z       "title": "Two-tier context sync (live to all, project to same-project)",
2026-06-21T04:47:53.9145088Z       "requiredStages": [
2026-06-21T04:47:53.9145192Z         "impl",
2026-06-21T04:47:53.9145296Z         "unit",
2026-06-21T04:47:53.9145412Z         "int"
2026-06-21T04:47:53.9145511Z       ],
2026-06-21T04:47:53.9145626Z       "stages": {
2026-06-21T04:47:53.9145732Z         "doc": {
2026-06-21T04:47:53.9145845Z           "complete": false,
2026-06-21T04:47:53.9145970Z           "evidence": []
2026-06-21T04:47:53.9146071Z         },
2026-06-21T04:47:53.9146183Z         "impl": {
2026-06-21T04:47:53.9146393Z           "complete": true,
2026-06-21T04:47:53.9146509Z           "evidence": [
2026-06-21T04:47:53.9146618Z             {
2026-06-21T04:47:53.9146763Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-21T04:47:53.9146881Z               "line": 85
2026-06-21T04:47:53.9146986Z             },
2026-06-21T04:47:53.9147101Z             {
2026-06-21T04:47:53.9147248Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T04:47:53.9147364Z               "line": 68
2026-06-21T04:47:53.9147468Z             },
2026-06-21T04:47:53.9147572Z             {
2026-06-21T04:47:53.9147721Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T04:47:53.9147830Z               "line": 99
2026-06-21T04:47:53.9147940Z             },
2026-06-21T04:47:53.9148068Z             {
2026-06-21T04:47:53.9148202Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T04:47:53.9148313Z               "line": 183
2026-06-21T04:47:53.9148416Z             },
2026-06-21T04:47:53.9148526Z             {
2026-06-21T04:47:53.9148661Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T04:47:53.9148765Z               "line": 314
2026-06-21T04:47:53.9148871Z             }
2026-06-21T04:47:53.9149050Z           ]
2026-06-21T04:47:53.9149159Z         },
2026-06-21T04:47:53.9149255Z         "int": {
2026-06-21T04:47:53.9149386Z           "complete": true,
2026-06-21T04:47:53.9149485Z           "evidence": [
2026-06-21T04:47:53.9149596Z             {
2026-06-21T04:47:53.9149758Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T04:47:53.9149863Z               "line": 156
2026-06-21T04:47:53.9149968Z             },
2026-06-21T04:47:53.9150068Z             {
2026-06-21T04:47:53.9150222Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T04:47:53.9150331Z               "line": 145
2026-06-21T04:47:53.9150430Z             },
2026-06-21T04:47:53.9150536Z             {
2026-06-21T04:47:53.9150683Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T04:47:53.9150807Z               "line": 707
2026-06-21T04:47:53.9150912Z             },
2026-06-21T04:47:53.9151021Z             {
2026-06-21T04:47:53.9151171Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T04:47:53.9151288Z               "line": 1069
2026-06-21T04:47:53.9151398Z             }
2026-06-21T04:47:53.9151500Z           ]
2026-06-21T04:47:53.9151603Z         },
2026-06-21T04:47:53.9151711Z         "unit": {
2026-06-21T04:47:53.9151826Z           "complete": true,
2026-06-21T04:47:53.9151939Z           "evidence": [
2026-06-21T04:47:53.9152048Z             {
2026-06-21T04:47:53.9152192Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T04:47:53.9152306Z               "line": 552
2026-06-21T04:47:53.9152415Z             },
2026-06-21T04:47:53.9152521Z             {
2026-06-21T04:47:53.9152667Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T04:47:53.9152774Z               "line": 595
2026-06-21T04:47:53.9152878Z             },
2026-06-21T04:47:53.9152996Z             {
2026-06-21T04:47:53.9153131Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T04:47:53.9153250Z               "line": 219
2026-06-21T04:47:53.9153350Z             }
2026-06-21T04:47:53.9153460Z           ]
2026-06-21T04:47:53.9153560Z         }
2026-06-21T04:47:53.9153670Z       }
2026-06-21T04:47:53.9153879Z     },
2026-06-21T04:47:53.9153980Z     {
2026-06-21T04:47:53.9154104Z       "id": "REQ-INST-6",
2026-06-21T04:47:53.9154319Z       "title": "Deferred messages not delivered to dormant/suspended instances",
2026-06-21T04:47:53.9154433Z       "requiredStages": [
2026-06-21T04:47:53.9154531Z         "impl",
2026-06-21T04:47:53.9154636Z         "unit",
2026-06-21T04:47:53.9154751Z         "int"
2026-06-21T04:47:53.9154851Z       ],
2026-06-21T04:47:53.9154960Z       "stages": {
2026-06-21T04:47:53.9155066Z         "doc": {
2026-06-21T04:47:53.9155189Z           "complete": true,
2026-06-21T04:47:53.9155300Z           "evidence": [
2026-06-21T04:47:53.9155504Z             {
2026-06-21T04:47:53.9155638Z               "path": "docs/DEFERRED.md",
2026-06-21T04:47:53.9155747Z               "line": 13
2026-06-21T04:47:53.9155856Z             }
2026-06-21T04:47:53.9155949Z           ]
2026-06-21T04:47:53.9156058Z         },
2026-06-21T04:47:53.9156153Z         "impl": {
2026-06-21T04:47:53.9156273Z           "complete": true,
2026-06-21T04:47:53.9156386Z           "evidence": [
2026-06-21T04:47:53.9156491Z             {
2026-06-21T04:47:53.9156650Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T04:47:53.9156762Z               "line": 391
2026-06-21T04:47:53.9156876Z             },
2026-06-21T04:47:53.9156977Z             {
2026-06-21T04:47:53.9157127Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T04:47:53.9157236Z               "line": 27
2026-06-21T04:47:53.9157333Z             },
2026-06-21T04:47:53.9157436Z             {
2026-06-21T04:47:53.9157585Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T04:47:53.9157695Z               "line": 73
2026-06-21T04:47:53.9157799Z             },
2026-06-21T04:47:53.9157910Z             {
2026-06-21T04:47:53.9158061Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T04:47:53.9158167Z               "line": 182
2026-06-21T04:47:53.9158272Z             },
2026-06-21T04:47:53.9158380Z             {
2026-06-21T04:47:53.9158529Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T04:47:53.9158633Z               "line": 426
2026-06-21T04:47:53.9158729Z             },
2026-06-21T04:47:53.9158825Z             {
2026-06-21T04:47:53.9159048Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-21T04:47:53.9159164Z               "line": 31
2026-06-21T04:47:53.9159277Z             },
2026-06-21T04:47:53.9159397Z             {
2026-06-21T04:47:53.9159536Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T04:47:53.9159663Z               "line": 202
2026-06-21T04:47:53.9159768Z             },
2026-06-21T04:47:53.9159877Z             {
2026-06-21T04:47:53.9160018Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T04:47:53.9160128Z               "line": 83
2026-06-21T04:47:53.9160238Z             },
2026-06-21T04:47:53.9160332Z             {
2026-06-21T04:47:53.9160467Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9160594Z               "line": 1849
2026-06-21T04:47:53.9160699Z             },
2026-06-21T04:47:53.9160801Z             {
2026-06-21T04:47:53.9160937Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T04:47:53.9161053Z               "line": 179
2026-06-21T04:47:53.9161162Z             },
2026-06-21T04:47:53.9161267Z             {
2026-06-21T04:47:53.9161392Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T04:47:53.9161505Z               "line": 215
2026-06-21T04:47:53.9161615Z             }
2026-06-21T04:47:53.9161712Z           ]
2026-06-21T04:47:53.9161815Z         },
2026-06-21T04:47:53.9161916Z         "int": {
2026-06-21T04:47:53.9162026Z           "complete": true,
2026-06-21T04:47:53.9162135Z           "evidence": [
2026-06-21T04:47:53.9162239Z             {
2026-06-21T04:47:53.9162387Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T04:47:53.9162494Z               "line": 721
2026-06-21T04:47:53.9162598Z             },
2026-06-21T04:47:53.9162814Z             {
2026-06-21T04:47:53.9162971Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T04:47:53.9163095Z               "line": 1114
2026-06-21T04:47:53.9163199Z             },
2026-06-21T04:47:53.9163305Z             {
2026-06-21T04:47:53.9163434Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T04:47:53.9163557Z               "line": 726
2026-06-21T04:47:53.9163663Z             }
2026-06-21T04:47:53.9163767Z           ]
2026-06-21T04:47:53.9163876Z         },
2026-06-21T04:47:53.9163983Z         "unit": {
2026-06-21T04:47:53.9164096Z           "complete": true,
2026-06-21T04:47:53.9164205Z           "evidence": [
2026-06-21T04:47:53.9164415Z             {
2026-06-21T04:47:53.9164584Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T04:47:53.9164687Z               "line": 661
2026-06-21T04:47:53.9164792Z             },
2026-06-21T04:47:53.9164898Z             {
2026-06-21T04:47:53.9165049Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T04:47:53.9165163Z               "line": 899
2026-06-21T04:47:53.9165278Z             },
2026-06-21T04:47:53.9165383Z             {
2026-06-21T04:47:53.9165525Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-21T04:47:53.9165631Z               "line": 66
2026-06-21T04:47:53.9165735Z             },
2026-06-21T04:47:53.9165845Z             {
2026-06-21T04:47:53.9165979Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T04:47:53.9166102Z               "line": 297
2026-06-21T04:47:53.9166213Z             },
2026-06-21T04:47:53.9166312Z             {
2026-06-21T04:47:53.9166460Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T04:47:53.9166575Z               "line": 203
2026-06-21T04:47:53.9166685Z             }
2026-06-21T04:47:53.9166790Z           ]
2026-06-21T04:47:53.9166899Z         }
2026-06-21T04:47:53.9170578Z       }
2026-06-21T04:47:53.9170769Z     },
2026-06-21T04:47:53.9170930Z     {
2026-06-21T04:47:53.9171118Z       "id": "REQ-INST-7",
2026-06-21T04:47:53.9171451Z       "title": "Subnet registry + bare-id resolution policy",
2026-06-21T04:47:53.9171652Z       "requiredStages": [
2026-06-21T04:47:53.9171822Z         "impl",
2026-06-21T04:47:53.9172009Z         "unit",
2026-06-21T04:47:53.9172185Z         "int"
2026-06-21T04:47:53.9172357Z       ],
2026-06-21T04:47:53.9172528Z       "stages": {
2026-06-21T04:47:53.9172704Z         "doc": {
2026-06-21T04:47:53.9172899Z           "complete": false,
2026-06-21T04:47:53.9173073Z           "evidence": []
2026-06-21T04:47:53.9173245Z         },
2026-06-21T04:47:53.9173412Z         "impl": {
2026-06-21T04:47:53.9173603Z           "complete": true,
2026-06-21T04:47:53.9173797Z           "evidence": [
2026-06-21T04:47:53.9173975Z             {
2026-06-21T04:47:53.9174247Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T04:47:53.9174441Z               "line": 436
2026-06-21T04:47:53.9174613Z             },
2026-06-21T04:47:53.9174775Z             {
2026-06-21T04:47:53.9175100Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.9175309Z               "line": 27
2026-06-21T04:47:53.9175483Z             },
2026-06-21T04:47:53.9175647Z             {
2026-06-21T04:47:53.9175933Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.9176134Z               "line": 207
2026-06-21T04:47:53.9176305Z             },
2026-06-21T04:47:53.9176487Z             {
2026-06-21T04:47:53.9176783Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.9176972Z               "line": 344
2026-06-21T04:47:53.9177130Z             },
2026-06-21T04:47:53.9177301Z             {
2026-06-21T04:47:53.9177578Z               "path": "crates/spt-net/src/net/ndjson.rs",
2026-06-21T04:47:53.9177760Z               "line": 59
2026-06-21T04:47:53.9177925Z             },
2026-06-21T04:47:53.9178097Z             {
2026-06-21T04:47:53.9178371Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9178552Z               "line": 41
2026-06-21T04:47:53.9178924Z             },
2026-06-21T04:47:53.9179186Z             {
2026-06-21T04:47:53.9179497Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T04:47:53.9179688Z               "line": 27
2026-06-21T04:47:53.9179844Z             },
2026-06-21T04:47:53.9180003Z             {
2026-06-21T04:47:53.9180275Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T04:47:53.9180465Z               "line": 119
2026-06-21T04:47:53.9180642Z             },
2026-06-21T04:47:53.9180811Z             {
2026-06-21T04:47:53.9181072Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T04:47:53.9181452Z               "line": 134
2026-06-21T04:47:53.9181616Z             },
2026-06-21T04:47:53.9181781Z             {
2026-06-21T04:47:53.9182035Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T04:47:53.9182221Z               "line": 139
2026-06-21T04:47:53.9182373Z             }
2026-06-21T04:47:53.9182531Z           ]
2026-06-21T04:47:53.9182693Z         },
2026-06-21T04:47:53.9182875Z         "int": {
2026-06-21T04:47:53.9183064Z           "complete": true,
2026-06-21T04:47:53.9183242Z           "evidence": [
2026-06-21T04:47:53.9183415Z             {
2026-06-21T04:47:53.9183662Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T04:47:53.9183844Z               "line": 145
2026-06-21T04:47:53.9184005Z             },
2026-06-21T04:47:53.9184159Z             {
2026-06-21T04:47:53.9184425Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T04:47:53.9184610Z               "line": 665
2026-06-21T04:47:53.9184788Z             },
2026-06-21T04:47:53.9184958Z             {
2026-06-21T04:47:53.9185231Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T04:47:53.9185403Z               "line": 964
2026-06-21T04:47:53.9185574Z             }
2026-06-21T04:47:53.9185742Z           ]
2026-06-21T04:47:53.9185903Z         },
2026-06-21T04:47:53.9186081Z         "unit": {
2026-06-21T04:47:53.9186273Z           "complete": true,
2026-06-21T04:47:53.9186461Z           "evidence": [
2026-06-21T04:47:53.9186626Z             {
2026-06-21T04:47:53.9186912Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.9187099Z               "line": 1134
2026-06-21T04:47:53.9187266Z             },
2026-06-21T04:47:53.9187428Z             {
2026-06-21T04:47:53.9187695Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.9187890Z               "line": 1521
2026-06-21T04:47:53.9188048Z             },
2026-06-21T04:47:53.9188219Z             {
2026-06-21T04:47:53.9188490Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-21T04:47:53.9188680Z               "line": 84
2026-06-21T04:47:53.9188854Z             },
2026-06-21T04:47:53.9189098Z             {
2026-06-21T04:47:53.9189365Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9189547Z               "line": 812
2026-06-21T04:47:53.9189722Z             },
2026-06-21T04:47:53.9189904Z             {
2026-06-21T04:47:53.9190162Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9190352Z               "line": 823
2026-06-21T04:47:53.9190525Z             },
2026-06-21T04:47:53.9190705Z             {
2026-06-21T04:47:53.9190957Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9191145Z               "line": 838
2026-06-21T04:47:53.9191315Z             },
2026-06-21T04:47:53.9191472Z             {
2026-06-21T04:47:53.9191717Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T04:47:53.9191894Z               "line": 166
2026-06-21T04:47:53.9192070Z             },
2026-06-21T04:47:53.9192228Z             {
2026-06-21T04:47:53.9192481Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T04:47:53.9192661Z               "line": 181
2026-06-21T04:47:53.9192824Z             },
2026-06-21T04:47:53.9192995Z             {
2026-06-21T04:47:53.9193243Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T04:47:53.9193649Z               "line": 214
2026-06-21T04:47:53.9193821Z             }
2026-06-21T04:47:53.9193985Z           ]
2026-06-21T04:47:53.9194156Z         }
2026-06-21T04:47:53.9194317Z       }
2026-06-21T04:47:53.9194467Z     },
2026-06-21T04:47:53.9194632Z     {
2026-06-21T04:47:53.9194828Z       "id": "REQ-INST-8",
2026-06-21T04:47:53.9195157Z       "title": "Remote-control mode distinct from local operation",
2026-06-21T04:47:53.9195363Z       "requiredStages": [
2026-06-21T04:47:53.9195543Z         "impl",
2026-06-21T04:47:53.9195715Z         "unit",
2026-06-21T04:47:53.9195886Z         "int"
2026-06-21T04:47:53.9196269Z       ],
2026-06-21T04:47:53.9196454Z       "stages": {
2026-06-21T04:47:53.9196627Z         "doc": {
2026-06-21T04:47:53.9196820Z           "complete": false,
2026-06-21T04:47:53.9197007Z           "evidence": []
2026-06-21T04:47:53.9197163Z         },
2026-06-21T04:47:53.9197330Z         "impl": {
2026-06-21T04:47:53.9197511Z           "complete": true,
2026-06-21T04:47:53.9197693Z           "evidence": [
2026-06-21T04:47:53.9197860Z             {
2026-06-21T04:47:53.9198121Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T04:47:53.9198307Z               "line": 104
2026-06-21T04:47:53.9198465Z             },
2026-06-21T04:47:53.9198627Z             {
2026-06-21T04:47:53.9198872Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T04:47:53.9199136Z               "line": 330
2026-06-21T04:47:53.9199305Z             },
2026-06-21T04:47:53.9199501Z             {
2026-06-21T04:47:53.9199744Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T04:47:53.9199930Z               "line": 370
2026-06-21T04:47:53.9200097Z             },
2026-06-21T04:47:53.9200259Z             {
2026-06-21T04:47:53.9200512Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T04:47:53.9200693Z               "line": 62
2026-06-21T04:47:53.9200855Z             }
2026-06-21T04:47:53.9201032Z           ]
2026-06-21T04:47:53.9201203Z         },
2026-06-21T04:47:53.9201371Z         "int": {
2026-06-21T04:47:53.9201565Z           "complete": true,
2026-06-21T04:47:53.9201753Z           "evidence": [
2026-06-21T04:47:53.9201912Z             {
2026-06-21T04:47:53.9202182Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T04:47:53.9202364Z               "line": 415
2026-06-21T04:47:53.9202516Z             },
2026-06-21T04:47:53.9202684Z             {
2026-06-21T04:47:53.9202945Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T04:47:53.9203122Z               "line": 1028
2026-06-21T04:47:53.9203288Z             }
2026-06-21T04:47:53.9203460Z           ]
2026-06-21T04:47:53.9203647Z         },
2026-06-21T04:47:53.9203808Z         "unit": {
2026-06-21T04:47:53.9204004Z           "complete": true,
2026-06-21T04:47:53.9204175Z           "evidence": [
2026-06-21T04:47:53.9204348Z             {
2026-06-21T04:47:53.9204603Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T04:47:53.9204796Z               "line": 366
2026-06-21T04:47:53.9204959Z             },
2026-06-21T04:47:53.9205120Z             {
2026-06-21T04:47:53.9205374Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T04:47:53.9205555Z               "line": 633
2026-06-21T04:47:53.9205731Z             },
2026-06-21T04:47:53.9205908Z             {
2026-06-21T04:47:53.9206160Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T04:47:53.9206351Z               "line": 116
2026-06-21T04:47:53.9206519Z             },
2026-06-21T04:47:53.9206690Z             {
2026-06-21T04:47:53.9207024Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T04:47:53.9207215Z               "line": 160
2026-06-21T04:47:53.9207394Z             }
2026-06-21T04:47:53.9207557Z           ]
2026-06-21T04:47:53.9207728Z         }
2026-06-21T04:47:53.9207885Z       }
2026-06-21T04:47:53.9208057Z     },
2026-06-21T04:47:53.9208224Z     {
2026-06-21T04:47:53.9208410Z       "id": "REQ-INST-9",
2026-06-21T04:47:53.9209083Z       "title": "Multi-subnet membership (same-user N subnets; cross-user seam)",
2026-06-21T04:47:53.9209301Z       "requiredStages": [
2026-06-21T04:47:53.9209544Z         "impl",
2026-06-21T04:47:53.9209715Z         "unit"
2026-06-21T04:47:53.9209885Z       ],
2026-06-21T04:47:53.9210061Z       "stages": {
2026-06-21T04:47:53.9210237Z         "doc": {
2026-06-21T04:47:53.9210434Z           "complete": false,
2026-06-21T04:47:53.9210609Z           "evidence": []
2026-06-21T04:47:53.9210762Z         },
2026-06-21T04:47:53.9210919Z         "impl": {
2026-06-21T04:47:53.9211106Z           "complete": true,
2026-06-21T04:47:53.9211449Z           "evidence": [
2026-06-21T04:47:53.9211626Z             {
2026-06-21T04:47:53.9211878Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9212111Z               "line": 449
2026-06-21T04:47:53.9212275Z             }
2026-06-21T04:47:53.9212435Z           ]
2026-06-21T04:47:53.9212621Z         },
2026-06-21T04:47:53.9212885Z         "int": {
2026-06-21T04:47:53.9213071Z           "complete": false,
2026-06-21T04:47:53.9213258Z           "evidence": []
2026-06-21T04:47:53.9213409Z         },
2026-06-21T04:47:53.9213582Z         "unit": {
2026-06-21T04:47:53.9213762Z           "complete": true,
2026-06-21T04:47:53.9213954Z           "evidence": [
2026-06-21T04:47:53.9214120Z             {
2026-06-21T04:47:53.9214392Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9214569Z               "line": 1397
2026-06-21T04:47:53.9214726Z             },
2026-06-21T04:47:53.9214903Z             {
2026-06-21T04:47:53.9215154Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9215361Z               "line": 1406
2026-06-21T04:47:53.9215539Z             },
2026-06-21T04:47:53.9215714Z             {
2026-06-21T04:47:53.9215981Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9216168Z               "line": 1422
2026-06-21T04:47:53.9216357Z             },
2026-06-21T04:47:53.9216521Z             {
2026-06-21T04:47:53.9216778Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9216940Z               "line": 1434
2026-06-21T04:47:53.9217112Z             },
2026-06-21T04:47:53.9217269Z             {
2026-06-21T04:47:53.9217507Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9217723Z               "line": 1454
2026-06-21T04:47:53.9217869Z             }
2026-06-21T04:47:53.9218040Z           ]
2026-06-21T04:47:53.9218207Z         }
2026-06-21T04:47:53.9218379Z       }
2026-06-21T04:47:53.9218527Z     },
2026-06-21T04:47:53.9218680Z     {
2026-06-21T04:47:53.9218883Z       "id": "REQ-INSTALL-1",
2026-06-21T04:47:53.9219400Z       "title": "Two install paths; signed one-line script; OS-service registration",
2026-06-21T04:47:53.9219605Z       "requiredStages": [
2026-06-21T04:47:53.9219770Z         "doc",
2026-06-21T04:47:53.9219939Z         "impl",
2026-06-21T04:47:53.9220123Z         "int"
2026-06-21T04:47:53.9220280Z       ],
2026-06-21T04:47:53.9220459Z       "stages": {
2026-06-21T04:47:53.9220621Z         "doc": {
2026-06-21T04:47:53.9220802Z           "complete": true,
2026-06-21T04:47:53.9220975Z           "evidence": [
2026-06-21T04:47:53.9221126Z             {
2026-06-21T04:47:53.9221327Z               "path": "CONTEXT.md",
2026-06-21T04:47:53.9221498Z               "line": 754
2026-06-21T04:47:53.9221661Z             }
2026-06-21T04:47:53.9221818Z           ]
2026-06-21T04:47:53.9221989Z         },
2026-06-21T04:47:53.9222167Z         "impl": {
2026-06-21T04:47:53.9222362Z           "complete": true,
2026-06-21T04:47:53.9222544Z           "evidence": [
2026-06-21T04:47:53.9222719Z             {
2026-06-21T04:47:53.9222938Z               "path": "installer/install.ps1",
2026-06-21T04:47:53.9223114Z               "line": 57
2026-06-21T04:47:53.9223279Z             },
2026-06-21T04:47:53.9223426Z             {
2026-06-21T04:47:53.9223646Z               "path": "installer/install.sh",
2026-06-21T04:47:53.9224036Z               "line": 52
2026-06-21T04:47:53.9224189Z             }
2026-06-21T04:47:53.9224365Z           ]
2026-06-21T04:47:53.9224523Z         },
2026-06-21T04:47:53.9224704Z         "int": {
2026-06-21T04:47:53.9224890Z           "complete": true,
2026-06-21T04:47:53.9225073Z           "evidence": [
2026-06-21T04:47:53.9225247Z             {
2026-06-21T04:47:53.9225487Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T04:47:53.9225666Z               "line": 21
2026-06-21T04:47:53.9225836Z             }
2026-06-21T04:47:53.9226007Z           ]
2026-06-21T04:47:53.9226165Z         },
2026-06-21T04:47:53.9226551Z         "unit": {
2026-06-21T04:47:53.9226737Z           "complete": false,
2026-06-21T04:47:53.9226917Z           "evidence": []
2026-06-21T04:47:53.9227099Z         }
2026-06-21T04:47:53.9227261Z       }
2026-06-21T04:47:53.9227433Z     },
2026-06-21T04:47:53.9227591Z     {
2026-06-21T04:47:53.9227786Z       "id": "REQ-INSTALL-10",
2026-06-21T04:47:53.9230523Z       "title": "Windows at-logon autostart runs the daemon in the background with no persistent window: the scheduled task launches `spt daemon start` (which spawn_detaches a console-less DETACHED_PROCESS daemon and exits) rather than the foreground `spt daemon run` — Task Scheduler's interactive ONLOGON launch of a long-lived console process otherwise leaves a visible console window for the daemon's whole lifetime (v0.7.4)",
2026-06-21T04:47:53.9230726Z       "requiredStages": [
2026-06-21T04:47:53.9230893Z         "impl",
2026-06-21T04:47:53.9231053Z         "unit"
2026-06-21T04:47:53.9231201Z       ],
2026-06-21T04:47:53.9231372Z       "stages": {
2026-06-21T04:47:53.9231540Z         "doc": {
2026-06-21T04:47:53.9231720Z           "complete": false,
2026-06-21T04:47:53.9231887Z           "evidence": []
2026-06-21T04:47:53.9232044Z         },
2026-06-21T04:47:53.9232207Z         "impl": {
2026-06-21T04:47:53.9232392Z           "complete": true,
2026-06-21T04:47:53.9232559Z           "evidence": [
2026-06-21T04:47:53.9232717Z             {
2026-06-21T04:47:53.9232945Z               "path": "installer/install.ps1",
2026-06-21T04:47:53.9233114Z               "line": 191
2026-06-21T04:47:53.9233279Z             }
2026-06-21T04:47:53.9233443Z           ]
2026-06-21T04:47:53.9233603Z         },
2026-06-21T04:47:53.9233755Z         "int": {
2026-06-21T04:47:53.9233924Z           "complete": false,
2026-06-21T04:47:53.9234092Z           "evidence": []
2026-06-21T04:47:53.9234239Z         },
2026-06-21T04:47:53.9234398Z         "unit": {
2026-06-21T04:47:53.9234573Z           "complete": true,
2026-06-21T04:47:53.9234740Z           "evidence": [
2026-06-21T04:47:53.9234911Z             {
2026-06-21T04:47:53.9235141Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T04:47:53.9235303Z               "line": 211
2026-06-21T04:47:53.9235450Z             }
2026-06-21T04:47:53.9235623Z           ]
2026-06-21T04:47:53.9235779Z         }
2026-06-21T04:47:53.9235947Z       }
2026-06-21T04:47:53.9236117Z     },
2026-06-21T04:47:53.9236279Z     {
2026-06-21T04:47:53.9236472Z       "id": "REQ-INSTALL-11",
2026-06-21T04:47:53.9240057Z       "title": "Adapter command templates resolve their program against the adapter's install dir BEFORE PATH: a `.spt`-shipped binary (dropped to adapters/_github/<safe>/ by --release/--github acquisition, or kept in the source_dir under copy-mode where only manifest+strings/ are copied to adapters/<name>) runs without any PATH placement — a bare-name template token (e.g. `claude-spt-digest ...`) is rewritten to <install_dir>/<program>(.exe on Windows) when that file exists, else left bare for the PATH fallback. Makes a `.spt` self-contained (closes the --release bundled-binary gap perri confirmed) (v0.7.4)",
2026-06-21T04:47:53.9240272Z       "requiredStages": [
2026-06-21T04:47:53.9240454Z         "doc",
2026-06-21T04:47:53.9240615Z         "impl",
2026-06-21T04:47:53.9240778Z         "unit"
2026-06-21T04:47:53.9240934Z       ],
2026-06-21T04:47:53.9241107Z       "stages": {
2026-06-21T04:47:53.9241462Z         "doc": {
2026-06-21T04:47:53.9241655Z           "complete": true,
2026-06-21T04:47:53.9241843Z           "evidence": [
2026-06-21T04:47:53.9241999Z             {
2026-06-21T04:47:53.9242195Z               "path": "CONTEXT.md",
2026-06-21T04:47:53.9242372Z               "line": 138
2026-06-21T04:47:53.9242538Z             },
2026-06-21T04:47:53.9242696Z             {
2026-06-21T04:47:53.9242890Z               "path": "docs/MANIFEST.md",
2026-06-21T04:47:53.9243068Z               "line": 82
2026-06-21T04:47:53.9243214Z             }
2026-06-21T04:47:53.9243383Z           ]
2026-06-21T04:47:53.9243534Z         },
2026-06-21T04:47:53.9243926Z         "impl": {
2026-06-21T04:47:53.9244120Z           "complete": true,
2026-06-21T04:47:53.9244291Z           "evidence": [
2026-06-21T04:47:53.9244446Z             {
2026-06-21T04:47:53.9244690Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T04:47:53.9244856Z               "line": 223
2026-06-21T04:47:53.9245034Z             },
2026-06-21T04:47:53.9245220Z             {
2026-06-21T04:47:53.9245491Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:53.9245667Z               "line": 99
2026-06-21T04:47:53.9245839Z             },
2026-06-21T04:47:53.9246001Z             {
2026-06-21T04:47:53.9246264Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:53.9246445Z               "line": 117
2026-06-21T04:47:53.9246612Z             },
2026-06-21T04:47:53.9246772Z             {
2026-06-21T04:47:53.9247013Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T04:47:53.9247190Z               "line": 332
2026-06-21T04:47:53.9247361Z             },
2026-06-21T04:47:53.9247529Z             {
2026-06-21T04:47:53.9247752Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T04:47:53.9247929Z               "line": 88
2026-06-21T04:47:53.9248091Z             },
2026-06-21T04:47:53.9248248Z             {
2026-06-21T04:47:53.9248492Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T04:47:53.9248668Z               "line": 104
2026-06-21T04:47:53.9248844Z             },
2026-06-21T04:47:53.9249084Z             {
2026-06-21T04:47:53.9249365Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T04:47:53.9249615Z               "line": 297
2026-06-21T04:47:53.9249783Z             },
2026-06-21T04:47:53.9249940Z             {
2026-06-21T04:47:53.9250165Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T04:47:53.9250351Z               "line": 332
2026-06-21T04:47:53.9250531Z             },
2026-06-21T04:47:53.9250685Z             {
2026-06-21T04:47:53.9250936Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T04:47:53.9251103Z               "line": 523
2026-06-21T04:47:53.9251276Z             },
2026-06-21T04:47:53.9251437Z             {
2026-06-21T04:47:53.9251681Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T04:47:53.9251836Z               "line": 546
2026-06-21T04:47:53.9251998Z             },
2026-06-21T04:47:53.9252173Z             {
2026-06-21T04:47:53.9252407Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T04:47:53.9252588Z               "line": 561
2026-06-21T04:47:53.9252750Z             },
2026-06-21T04:47:53.9252913Z             {
2026-06-21T04:47:53.9253122Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T04:47:53.9253294Z               "line": 492
2026-06-21T04:47:53.9253446Z             }
2026-06-21T04:47:53.9253609Z           ]
2026-06-21T04:47:53.9253775Z         },
2026-06-21T04:47:53.9253924Z         "int": {
2026-06-21T04:47:53.9254108Z           "complete": false,
2026-06-21T04:47:53.9254295Z           "evidence": []
2026-06-21T04:47:53.9254458Z         },
2026-06-21T04:47:53.9254633Z         "unit": {
2026-06-21T04:47:53.9254823Z           "complete": true,
2026-06-21T04:47:53.9255007Z           "evidence": [
2026-06-21T04:47:53.9255164Z             {
2026-06-21T04:47:53.9255417Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T04:47:53.9255794Z               "line": 799
2026-06-21T04:47:53.9255951Z             },
2026-06-21T04:47:53.9256104Z             {
2026-06-21T04:47:53.9256346Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T04:47:53.9256524Z               "line": 811
2026-06-21T04:47:53.9256695Z             },
2026-06-21T04:47:53.9256866Z             {
2026-06-21T04:47:53.9257101Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T04:47:53.9257271Z               "line": 820
2026-06-21T04:47:53.9257428Z             }
2026-06-21T04:47:53.9257592Z           ]
2026-06-21T04:47:53.9257755Z         }
2026-06-21T04:47:53.9258136Z       }
2026-06-21T04:47:53.9258307Z     },
2026-06-21T04:47:53.9258460Z     {
2026-06-21T04:47:53.9258642Z       "id": "REQ-INSTALL-12",
2026-06-21T04:47:53.9263798Z       "title": "Durable active-profile pointer for bind-time profile selection (ADR-0021): adapters/active-profiles.toml at the registry ROOT (sibling to the per-adapter <name>/ dirs, so adapter add/update/remove — which only rewrite a <name>/ subdir — can never clobber it), a flat host_binary → \"adapter[:profile]\" map. Read at bind as the PRIMARY profile selector; unset → the registered_at_ms fallback (REQ-START-5). Written ONLY by `spt adapter use <adapter>[:profile]` (resolves the adapter's host_binaries → sets each binary→adapter[:profile]); `spt adapter use --clear <adapter|binary>` drops. NEVER auto-written by install/update/adapter add (that is precisely what would let an update silently flip the active profile). A stale pointer (uninstalled adapter / deleted profile) self-heals: ignored, fall back, warn once. Pruned on adapter remove. Atomic write (spt_store atomic). (v0.9.0)",
2026-06-21T04:47:53.9264044Z       "requiredStages": [
2026-06-21T04:47:53.9264216Z         "doc",
2026-06-21T04:47:53.9264378Z         "impl",
2026-06-21T04:47:53.9264535Z         "unit",
2026-06-21T04:47:53.9264703Z         "int"
2026-06-21T04:47:53.9264878Z       ],
2026-06-21T04:47:53.9265056Z       "stages": {
2026-06-21T04:47:53.9265231Z         "doc": {
2026-06-21T04:47:53.9265407Z           "complete": true,
2026-06-21T04:47:53.9265590Z           "evidence": [
2026-06-21T04:47:53.9265748Z             {
2026-06-21T04:47:53.9265938Z               "path": "CONTEXT.md",
2026-06-21T04:47:53.9266116Z               "line": 185
2026-06-21T04:47:53.9266272Z             }
2026-06-21T04:47:53.9266440Z           ]
2026-06-21T04:47:53.9266596Z         },
2026-06-21T04:47:53.9266773Z         "impl": {
2026-06-21T04:47:53.9266950Z           "complete": true,
2026-06-21T04:47:53.9267117Z           "evidence": [
2026-06-21T04:47:53.9267279Z             {
2026-06-21T04:47:53.9267531Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T04:47:53.9267732Z               "line": 27
2026-06-21T04:47:53.9267892Z             },
2026-06-21T04:47:53.9268063Z             {
2026-06-21T04:47:53.9268305Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T04:47:53.9268500Z               "line": 223
2026-06-21T04:47:53.9268659Z             },
2026-06-21T04:47:53.9268815Z             {
2026-06-21T04:47:53.9269115Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9269293Z               "line": 5677
2026-06-21T04:47:53.9269454Z             }
2026-06-21T04:47:53.9269603Z           ]
2026-06-21T04:47:53.9269778Z         },
2026-06-21T04:47:53.9269956Z         "int": {
2026-06-21T04:47:53.9270132Z           "complete": true,
2026-06-21T04:47:53.9270303Z           "evidence": [
2026-06-21T04:47:53.9270466Z             {
2026-06-21T04:47:53.9270717Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T04:47:53.9270899Z               "line": 19
2026-06-21T04:47:53.9271070Z             }
2026-06-21T04:47:53.9271232Z           ]
2026-06-21T04:47:53.9271379Z         },
2026-06-21T04:47:53.9271551Z         "unit": {
2026-06-21T04:47:53.9271737Z           "complete": true,
2026-06-21T04:47:53.9271918Z           "evidence": [
2026-06-21T04:47:53.9272295Z             {
2026-06-21T04:47:53.9272552Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T04:47:53.9272735Z               "line": 395
2026-06-21T04:47:53.9272886Z             },
2026-06-21T04:47:53.9273061Z             {
2026-06-21T04:47:53.9273302Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T04:47:53.9273480Z               "line": 421
2026-06-21T04:47:53.9273645Z             },
2026-06-21T04:47:53.9273804Z             {
2026-06-21T04:47:53.9274048Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T04:47:53.9274213Z               "line": 440
2026-06-21T04:47:53.9274377Z             },
2026-06-21T04:47:53.9274738Z             {
2026-06-21T04:47:53.9274987Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T04:47:53.9275167Z               "line": 475
2026-06-21T04:47:53.9275340Z             },
2026-06-21T04:47:53.9275511Z             {
2026-06-21T04:47:53.9275702Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9275886Z               "line": 8665
2026-06-21T04:47:53.9276042Z             }
2026-06-21T04:47:53.9276207Z           ]
2026-06-21T04:47:53.9276362Z         }
2026-06-21T04:47:53.9276532Z       }
2026-06-21T04:47:53.9276695Z     },
2026-06-21T04:47:53.9276841Z     {
2026-06-21T04:47:53.9277038Z       "id": "REQ-INSTALL-2",
2026-06-21T04:47:53.9277301Z       "title": "Marketplace-repackaging-friendly install",
2026-06-21T04:47:53.9277481Z       "requiredStages": [
2026-06-21T04:47:53.9277648Z         "doc"
2026-06-21T04:47:53.9277820Z       ],
2026-06-21T04:47:53.9277991Z       "stages": {
2026-06-21T04:47:53.9278149Z         "doc": {
2026-06-21T04:47:53.9278353Z           "complete": true,
2026-06-21T04:47:53.9278525Z           "evidence": [
2026-06-21T04:47:53.9278684Z             {
2026-06-21T04:47:53.9278870Z               "path": "CONTEXT.md",
2026-06-21T04:47:53.9279205Z               "line": 755
2026-06-21T04:47:53.9279384Z             }
2026-06-21T04:47:53.9279567Z           ]
2026-06-21T04:47:53.9279738Z         },
2026-06-21T04:47:53.9279910Z         "impl": {
2026-06-21T04:47:53.9280101Z           "complete": false,
2026-06-21T04:47:53.9280272Z           "evidence": []
2026-06-21T04:47:53.9280435Z         },
2026-06-21T04:47:53.9280601Z         "int": {
2026-06-21T04:47:53.9280774Z           "complete": false,
2026-06-21T04:47:53.9280945Z           "evidence": []
2026-06-21T04:47:53.9281098Z         },
2026-06-21T04:47:53.9281267Z         "unit": {
2026-06-21T04:47:53.9281445Z           "complete": false,
2026-06-21T04:47:53.9281625Z           "evidence": []
2026-06-21T04:47:53.9281788Z         }
2026-06-21T04:47:53.9281954Z       }
2026-06-21T04:47:53.9282131Z     },
2026-06-21T04:47:53.9282293Z     {
2026-06-21T04:47:53.9282478Z       "id": "REQ-INSTALL-3",
2026-06-21T04:47:53.9282751Z       "title": "Idempotent + interactive-optional first run",
2026-06-21T04:47:53.9282946Z       "requiredStages": [
2026-06-21T04:47:53.9283117Z         "impl",
2026-06-21T04:47:53.9283280Z         "int"
2026-06-21T04:47:53.9283446Z       ],
2026-06-21T04:47:53.9283608Z       "stages": {
2026-06-21T04:47:53.9283777Z         "doc": {
2026-06-21T04:47:53.9283963Z           "complete": false,
2026-06-21T04:47:53.9284144Z           "evidence": []
2026-06-21T04:47:53.9284307Z         },
2026-06-21T04:47:53.9284482Z         "impl": {
2026-06-21T04:47:53.9284674Z           "complete": true,
2026-06-21T04:47:53.9284840Z           "evidence": [
2026-06-21T04:47:53.9284993Z             {
2026-06-21T04:47:53.9285213Z               "path": "installer/install.ps1",
2026-06-21T04:47:53.9285380Z               "line": 100
2026-06-21T04:47:53.9285537Z             },
2026-06-21T04:47:53.9285693Z             {
2026-06-21T04:47:53.9285905Z               "path": "installer/install.ps1",
2026-06-21T04:47:53.9286075Z               "line": 111
2026-06-21T04:47:53.9286244Z             },
2026-06-21T04:47:53.9286403Z             {
2026-06-21T04:47:53.9286607Z               "path": "installer/install.sh",
2026-06-21T04:47:53.9286782Z               "line": 79
2026-06-21T04:47:53.9287140Z             }
2026-06-21T04:47:53.9287298Z           ]
2026-06-21T04:47:53.9287455Z         },
2026-06-21T04:47:53.9287603Z         "int": {
2026-06-21T04:47:53.9287779Z           "complete": true,
2026-06-21T04:47:53.9287951Z           "evidence": [
2026-06-21T04:47:53.9288119Z             {
2026-06-21T04:47:53.9288346Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T04:47:53.9288514Z               "line": 167
2026-06-21T04:47:53.9288666Z             }
2026-06-21T04:47:53.9288824Z           ]
2026-06-21T04:47:53.9289046Z         },
2026-06-21T04:47:53.9289221Z         "unit": {
2026-06-21T04:47:53.9289741Z           "complete": false,
2026-06-21T04:47:53.9289917Z           "evidence": []
2026-06-21T04:47:53.9290089Z         }
2026-06-21T04:47:53.9290245Z       }
2026-06-21T04:47:53.9290422Z     },
2026-06-21T04:47:53.9290579Z     {
2026-06-21T04:47:53.9290771Z       "id": "REQ-INSTALL-4",
2026-06-21T04:47:53.9291990Z       "title": "Adapter registration lifecycle: spt adapter add (--github, manifest-first, install-is-first-update) + soft-deregister remove + optional manifest uninstall template; node-local registered-adapter set self-update ripples over",
2026-06-21T04:47:53.9292219Z       "requiredStages": [
2026-06-21T04:47:53.9292386Z         "impl",
2026-06-21T04:47:53.9292557Z         "unit"
2026-06-21T04:47:53.9292730Z       ],
2026-06-21T04:47:53.9292886Z       "stages": {
2026-06-21T04:47:53.9293058Z         "doc": {
2026-06-21T04:47:53.9293240Z           "complete": false,
2026-06-21T04:47:53.9293407Z           "evidence": []
2026-06-21T04:47:53.9293564Z         },
2026-06-21T04:47:53.9293725Z         "impl": {
2026-06-21T04:47:53.9293922Z           "complete": true,
2026-06-21T04:47:53.9294087Z           "evidence": [
2026-06-21T04:47:53.9294249Z             {
2026-06-21T04:47:53.9294514Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T04:47:53.9294680Z               "line": 165
2026-06-21T04:47:53.9294838Z             },
2026-06-21T04:47:53.9294991Z             {
2026-06-21T04:47:53.9295239Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T04:47:53.9295391Z               "line": 29
2026-06-21T04:47:53.9295553Z             },
2026-06-21T04:47:53.9295710Z             {
2026-06-21T04:47:53.9295963Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T04:47:53.9296146Z               "line": 288
2026-06-21T04:47:53.9296297Z             },
2026-06-21T04:47:53.9296451Z             {
2026-06-21T04:47:53.9296698Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T04:47:53.9296874Z               "line": 356
2026-06-21T04:47:53.9297050Z             },
2026-06-21T04:47:53.9297209Z             {
2026-06-21T04:47:53.9297472Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T04:47:53.9297638Z               "line": 386
2026-06-21T04:47:53.9297805Z             },
2026-06-21T04:47:53.9297967Z             {
2026-06-21T04:47:53.9298196Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T04:47:53.9298378Z               "line": 434
2026-06-21T04:47:53.9298539Z             },
2026-06-21T04:47:53.9298698Z             {
2026-06-21T04:47:53.9298902Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9299154Z               "line": 5396
2026-06-21T04:47:53.9299318Z             }
2026-06-21T04:47:53.9299492Z           ]
2026-06-21T04:47:53.9299650Z         },
2026-06-21T04:47:53.9299814Z         "int": {
2026-06-21T04:47:53.9299986Z           "complete": false,
2026-06-21T04:47:53.9300157Z           "evidence": []
2026-06-21T04:47:53.9300330Z         },
2026-06-21T04:47:53.9300496Z         "unit": {
2026-06-21T04:47:53.9300673Z           "complete": true,
2026-06-21T04:47:53.9300843Z           "evidence": [
2026-06-21T04:47:53.9300997Z             {
2026-06-21T04:47:53.9301269Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T04:47:53.9301435Z               "line": 375
2026-06-21T04:47:53.9301832Z             },
2026-06-21T04:47:53.9302012Z             {
2026-06-21T04:47:53.9302270Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T04:47:53.9302440Z               "line": 808
2026-06-21T04:47:53.9302608Z             },
2026-06-21T04:47:53.9302779Z             {
2026-06-21T04:47:53.9303022Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T04:47:53.9303204Z               "line": 849
2026-06-21T04:47:53.9303379Z             },
2026-06-21T04:47:53.9303537Z             {
2026-06-21T04:47:53.9303796Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T04:47:53.9303971Z               "line": 869
2026-06-21T04:47:53.9304372Z             },
2026-06-21T04:47:53.9304525Z             {
2026-06-21T04:47:53.9304747Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9304926Z               "line": 8403
2026-06-21T04:47:53.9305083Z             }
2026-06-21T04:47:53.9305241Z           ]
2026-06-21T04:47:53.9305389Z         }
2026-06-21T04:47:53.9305546Z       }
2026-06-21T04:47:53.9305694Z     },
2026-06-21T04:47:53.9305842Z     {
2026-06-21T04:47:53.9306028Z       "id": "REQ-INSTALL-5",
2026-06-21T04:47:53.9306943Z       "title": "Non-interactive install path: the canonical one-liner doubles as every adapter's pack-in on-demand install (no second mechanism); sha256-verified fetch; user-PATH registration",
2026-06-21T04:47:53.9307119Z       "requiredStages": [
2026-06-21T04:47:53.9307273Z         "impl",
2026-06-21T04:47:53.9312774Z         "int"
2026-06-21T04:47:53.9312957Z       ],
2026-06-21T04:47:53.9313135Z       "stages": {
2026-06-21T04:47:53.9313291Z         "doc": {
2026-06-21T04:47:53.9313478Z           "complete": false,
2026-06-21T04:47:53.9313663Z           "evidence": []
2026-06-21T04:47:53.9313816Z         },
2026-06-21T04:47:53.9313993Z         "impl": {
2026-06-21T04:47:53.9314159Z           "complete": true,
2026-06-21T04:47:53.9314336Z           "evidence": [
2026-06-21T04:47:53.9314488Z             {
2026-06-21T04:47:53.9314699Z               "path": "installer/install.ps1",
2026-06-21T04:47:53.9314865Z               "line": 5
2026-06-21T04:47:53.9315023Z             },
2026-06-21T04:47:53.9315207Z             {
2026-06-21T04:47:53.9315421Z               "path": "installer/install.sh",
2026-06-21T04:47:53.9315595Z               "line": 6
2026-06-21T04:47:53.9315768Z             }
2026-06-21T04:47:53.9315934Z           ]
2026-06-21T04:47:53.9316116Z         },
2026-06-21T04:47:53.9316283Z         "int": {
2026-06-21T04:47:53.9316482Z           "complete": true,
2026-06-21T04:47:53.9316650Z           "evidence": [
2026-06-21T04:47:53.9316806Z             {
2026-06-21T04:47:53.9317040Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T04:47:53.9317218Z               "line": 22
2026-06-21T04:47:53.9317378Z             }
2026-06-21T04:47:53.9317533Z           ]
2026-06-21T04:47:53.9317693Z         },
2026-06-21T04:47:53.9317847Z         "unit": {
2026-06-21T04:47:53.9318041Z           "complete": false,
2026-06-21T04:47:53.9318217Z           "evidence": []
2026-06-21T04:47:53.9318382Z         }
2026-06-21T04:47:53.9318549Z       }
2026-06-21T04:47:53.9318706Z     },
2026-06-21T04:47:53.9318869Z     {
2026-06-21T04:47:53.9319146Z       "id": "REQ-INSTALL-6",
2026-06-21T04:47:53.9321497Z       "title": "Linux elevation install leg: install.sh symlinks the binary into a sudo-reachable path (/usr/local/bin; graceful print-the-one-liner when unelevated) so sudo spt resolves; first sudo spt detects elevation and prompts ONCE for the default user account — thereafter any elevated daemon launch runs daemon + state under that account, never root (KH 5.7 interplay verified) (M8 decision 8)",
2026-06-21T04:47:53.9321727Z       "requiredStages": [
2026-06-21T04:47:53.9321897Z         "impl",
2026-06-21T04:47:53.9322061Z         "unit"
2026-06-21T04:47:53.9322217Z       ],
2026-06-21T04:47:53.9322385Z       "stages": {
2026-06-21T04:47:53.9322550Z         "doc": {
2026-06-21T04:47:53.9322714Z           "complete": false,
2026-06-21T04:47:53.9323094Z           "evidence": []
2026-06-21T04:47:53.9323262Z         },
2026-06-21T04:47:53.9323437Z         "impl": {
2026-06-21T04:47:53.9323613Z           "complete": true,
2026-06-21T04:47:53.9323780Z           "evidence": [
2026-06-21T04:47:53.9323932Z             {
2026-06-21T04:47:53.9324166Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.9324324Z               "line": 61
2026-06-21T04:47:53.9324476Z             },
2026-06-21T04:47:53.9324643Z             {
2026-06-21T04:47:53.9324882Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:53.9325063Z               "line": 641
2026-06-21T04:47:53.9325216Z             },
2026-06-21T04:47:53.9325574Z             {
2026-06-21T04:47:53.9325838Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T04:47:53.9326018Z               "line": 191
2026-06-21T04:47:53.9326194Z             },
2026-06-21T04:47:53.9326361Z             {
2026-06-21T04:47:53.9326610Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T04:47:53.9326809Z               "line": 276
2026-06-21T04:47:53.9326962Z             },
2026-06-21T04:47:53.9327134Z             {
2026-06-21T04:47:53.9327339Z               "path": "crates/spt/src/main.rs",
2026-06-21T04:47:53.9327520Z               "line": 43
2026-06-21T04:47:53.9327672Z             },
2026-06-21T04:47:53.9327826Z             {
2026-06-21T04:47:53.9328029Z               "path": "installer/install.sh",
2026-06-21T04:47:53.9328193Z               "line": 104
2026-06-21T04:47:53.9328344Z             }
2026-06-21T04:47:53.9328503Z           ]
2026-06-21T04:47:53.9328672Z         },
2026-06-21T04:47:53.9328839Z         "int": {
2026-06-21T04:47:53.9329104Z           "complete": false,
2026-06-21T04:47:53.9329271Z           "evidence": []
2026-06-21T04:47:53.9329477Z         },
2026-06-21T04:47:53.9329633Z         "unit": {
2026-06-21T04:47:53.9329815Z           "complete": true,
2026-06-21T04:47:53.9329991Z           "evidence": [
2026-06-21T04:47:53.9330153Z             {
2026-06-21T04:47:53.9330407Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T04:47:53.9330582Z               "line": 894
2026-06-21T04:47:53.9330741Z             }
2026-06-21T04:47:53.9330911Z           ]
2026-06-21T04:47:53.9331075Z         }
2026-06-21T04:47:53.9331234Z       }
2026-06-21T04:47:53.9331401Z     },
2026-06-21T04:47:53.9331556Z     {
2026-06-21T04:47:53.9331749Z       "id": "REQ-INSTALL-7",
2026-06-21T04:47:53.9333842Z       "title": "Windows inbound reachability: the elevated install leg registers the inbound-UDP firewall rule (New-NetFirewallRule); the daemon self-detects blocked inbound and renders it as the no-connection state in subnet status + the coming-online banner (covers user-scope installs that skip the elevated leg — never a silent NO_SEED_HOLDER dead-end) (M8 root cause 3)",
2026-06-21T04:47:53.9334059Z       "requiredStages": [
2026-06-21T04:47:53.9334221Z         "impl"
2026-06-21T04:47:53.9334364Z       ],
2026-06-21T04:47:53.9334551Z       "stages": {
2026-06-21T04:47:53.9334712Z         "doc": {
2026-06-21T04:47:53.9334884Z           "complete": false,
2026-06-21T04:47:53.9335045Z           "evidence": []
2026-06-21T04:47:53.9335204Z         },
2026-06-21T04:47:53.9335360Z         "impl": {
2026-06-21T04:47:53.9335542Z           "complete": true,
2026-06-21T04:47:53.9335723Z           "evidence": [
2026-06-21T04:47:53.9335881Z             {
2026-06-21T04:47:53.9336096Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9336261Z               "line": 3920
2026-06-21T04:47:53.9336413Z             },
2026-06-21T04:47:53.9336573Z             {
2026-06-21T04:47:53.9336788Z               "path": "installer/install.ps1",
2026-06-21T04:47:53.9336978Z               "line": 157
2026-06-21T04:47:53.9337127Z             }
2026-06-21T04:47:53.9337298Z           ]
2026-06-21T04:47:53.9337446Z         },
2026-06-21T04:47:53.9337612Z         "int": {
2026-06-21T04:47:53.9337789Z           "complete": false,
2026-06-21T04:47:53.9338208Z           "evidence": []
2026-06-21T04:47:53.9338377Z         },
2026-06-21T04:47:53.9338538Z         "unit": {
2026-06-21T04:47:53.9338715Z           "complete": false,
2026-06-21T04:47:53.9338905Z           "evidence": []
2026-06-21T04:47:53.9339176Z         }
2026-06-21T04:47:53.9339361Z       }
2026-06-21T04:47:53.9339530Z     },
2026-06-21T04:47:53.9339699Z     {
2026-06-21T04:47:53.9339873Z       "id": "REQ-INSTALL-8",
2026-06-21T04:47:53.9341876Z       "title": "OS-service registration (REQ-INSTALL-1's deferred third leg): Linux systemd USER service + loginctl enable-linger (linger rides the elevated install leg; daemon starts at boot pre-login, user universe per KH 5.7, systemctl --user managed); Windows scheduled task at-logon (interactive session, no stored credentials); a node is reachable after reboot without any manual spt invocation (M8 decision 17)",
2026-06-21T04:47:53.9342279Z       "requiredStages": [
2026-06-21T04:47:53.9342445Z         "impl"
2026-06-21T04:47:53.9342613Z       ],
2026-06-21T04:47:53.9342770Z       "stages": {
2026-06-21T04:47:53.9342927Z         "doc": {
2026-06-21T04:47:53.9343118Z           "complete": false,
2026-06-21T04:47:53.9343304Z           "evidence": []
2026-06-21T04:47:53.9343452Z         },
2026-06-21T04:47:53.9343619Z         "impl": {
2026-06-21T04:47:53.9343805Z           "complete": true,
2026-06-21T04:47:53.9343977Z           "evidence": [
2026-06-21T04:47:53.9344135Z             {
2026-06-21T04:47:53.9344353Z               "path": "installer/install.ps1",
2026-06-21T04:47:53.9344530Z               "line": 184
2026-06-21T04:47:53.9344699Z             },
2026-06-21T04:47:53.9344849Z             {
2026-06-21T04:47:53.9345072Z               "path": "installer/install.sh",
2026-06-21T04:47:53.9345243Z               "line": 121
2026-06-21T04:47:53.9345421Z             }
2026-06-21T04:47:53.9345582Z           ]
2026-06-21T04:47:53.9345745Z         },
2026-06-21T04:47:53.9345906Z         "int": {
2026-06-21T04:47:53.9346079Z           "complete": false,
2026-06-21T04:47:53.9346269Z           "evidence": []
2026-06-21T04:47:53.9346431Z         },
2026-06-21T04:47:53.9346593Z         "unit": {
2026-06-21T04:47:53.9346756Z           "complete": false,
2026-06-21T04:47:53.9346925Z           "evidence": []
2026-06-21T04:47:53.9347082Z         }
2026-06-21T04:47:53.9347242Z       }
2026-06-21T04:47:53.9347416Z     },
2026-06-21T04:47:53.9347571Z     {
2026-06-21T04:47:53.9347772Z       "id": "REQ-INSTALL-9",
2026-06-21T04:47:53.9350259Z       "title": "Adapter add from a GitHub release archive: `spt adapter add --release <user/repo> [--tag <tag>] [--asset <name>]` fetches a `.spt` tar asset over HTTPS+GitHub trust, extracts it to the durable adapters/_github home, and registers the root — ships built binaries source-free and versioned (the distribution path for an adapter whose dev repo is a monorepo subdir, where --github root-only clone does not fit)",
2026-06-21T04:47:53.9350487Z       "requiredStages": [
2026-06-21T04:47:53.9350659Z         "doc",
2026-06-21T04:47:53.9350831Z         "impl",
2026-06-21T04:47:53.9350997Z         "unit"
2026-06-21T04:47:53.9351145Z       ],
2026-06-21T04:47:53.9351317Z       "stages": {
2026-06-21T04:47:53.9351470Z         "doc": {
2026-06-21T04:47:53.9351655Z           "complete": true,
2026-06-21T04:47:53.9351832Z           "evidence": [
2026-06-21T04:47:53.9351984Z             {
2026-06-21T04:47:53.9352157Z               "path": "CONTEXT.md",
2026-06-21T04:47:53.9352321Z               "line": 771
2026-06-21T04:47:53.9352488Z             }
2026-06-21T04:47:53.9352647Z           ]
2026-06-21T04:47:53.9352811Z         },
2026-06-21T04:47:53.9352976Z         "impl": {
2026-06-21T04:47:53.9353140Z           "complete": true,
2026-06-21T04:47:53.9353325Z           "evidence": [
2026-06-21T04:47:53.9353478Z             {
2026-06-21T04:47:53.9353693Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9353859Z               "line": 2535
2026-06-21T04:47:53.9354017Z             },
2026-06-21T04:47:53.9354174Z             {
2026-06-21T04:47:53.9354584Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9354761Z               "line": 2559
2026-06-21T04:47:53.9354928Z             }
2026-06-21T04:47:53.9355085Z           ]
2026-06-21T04:47:53.9355246Z         },
2026-06-21T04:47:53.9355404Z         "int": {
2026-06-21T04:47:53.9355584Z           "complete": false,
2026-06-21T04:47:53.9355757Z           "evidence": []
2026-06-21T04:47:53.9355943Z         },
2026-06-21T04:47:53.9356110Z         "unit": {
2026-06-21T04:47:53.9356310Z           "complete": true,
2026-06-21T04:47:53.9356475Z           "evidence": [
2026-06-21T04:47:53.9356649Z             {
2026-06-21T04:47:53.9356862Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9357245Z               "line": 7591
2026-06-21T04:47:53.9357419Z             },
2026-06-21T04:47:53.9357586Z             {
2026-06-21T04:47:53.9357793Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9357985Z               "line": 8433
2026-06-21T04:47:53.9358136Z             }
2026-06-21T04:47:53.9358309Z           ]
2026-06-21T04:47:53.9358451Z         }
2026-06-21T04:47:53.9358623Z       }
2026-06-21T04:47:53.9358771Z     },
2026-06-21T04:47:53.9358928Z     {
2026-06-21T04:47:53.9359187Z       "id": "REQ-KICK-1",
2026-06-21T04:47:53.9362900Z       "title": "Explicit, loud controller displacement: `spt rc kick <target>` / `--take` (Take intent) kicks the incumbent controller and becomes controller; the displaced controller receives a LOUD `Displaced{by}` notice and is FULLY DETACHED (not demoted to a viewer). A default attach to a controlled endpoint is NEVER a silent displace (it is the Control busy-refusal). An old (N-1) rc omits intent → Control, so it can drive a free endpoint but CANNOT `--take` — it can never silently steal, and gets a clean busy-refusal instead. Taking control rides the same access_check(endpoint, origin, Unsolicited) as a normal control attach (if you may drive, you may take — no elevated kick policy). The picker surfaces 'Kick <node> and attach' (Take) only on a controlled (blue ■) endpoint, via the existing attach dispatch (single-bringup-path: intent is a parameter).",
2026-06-21T04:47:53.9363109Z       "requiredStages": [
2026-06-21T04:47:53.9363236Z         "doc",
2026-06-21T04:47:53.9363361Z         "impl",
2026-06-21T04:47:53.9363495Z         "unit",
2026-06-21T04:47:53.9363613Z         "int"
2026-06-21T04:47:53.9363738Z       ],
2026-06-21T04:47:53.9363842Z       "stages": {
2026-06-21T04:47:53.9363967Z         "doc": {
2026-06-21T04:47:53.9364105Z           "complete": true,
2026-06-21T04:47:53.9364229Z           "evidence": [
2026-06-21T04:47:53.9364353Z             {
2026-06-21T04:47:53.9364495Z               "path": "CONTEXT.md",
2026-06-21T04:47:53.9364635Z               "line": 342
2026-06-21T04:47:53.9364753Z             }
2026-06-21T04:47:53.9364878Z           ]
2026-06-21T04:47:53.9365001Z         },
2026-06-21T04:47:53.9365116Z         "impl": {
2026-06-21T04:47:53.9365255Z           "complete": true,
2026-06-21T04:47:53.9365392Z           "evidence": [
2026-06-21T04:47:53.9365512Z             {
2026-06-21T04:47:53.9365692Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T04:47:53.9365825Z               "line": 41
2026-06-21T04:47:53.9365950Z             },
2026-06-21T04:47:53.9366063Z             {
2026-06-21T04:47:53.9366216Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.9366336Z               "line": 701
2026-06-21T04:47:53.9366459Z             }
2026-06-21T04:47:53.9366575Z           ]
2026-06-21T04:47:53.9366698Z         },
2026-06-21T04:47:53.9366827Z         "int": {
2026-06-21T04:47:53.9366960Z           "complete": true,
2026-06-21T04:47:53.9367084Z           "evidence": [
2026-06-21T04:47:53.9367190Z             {
2026-06-21T04:47:53.9367365Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T04:47:53.9367490Z               "line": 913
2026-06-21T04:47:53.9367608Z             }
2026-06-21T04:47:53.9367723Z           ]
2026-06-21T04:47:53.9367839Z         },
2026-06-21T04:47:53.9368240Z         "unit": {
2026-06-21T04:47:53.9368368Z           "complete": true,
2026-06-21T04:47:53.9368502Z           "evidence": [
2026-06-21T04:47:53.9368611Z             {
2026-06-21T04:47:53.9368788Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T04:47:53.9368916Z               "line": 205
2026-06-21T04:47:53.9369127Z             }
2026-06-21T04:47:53.9369245Z           ]
2026-06-21T04:47:53.9369370Z         }
2026-06-21T04:47:53.9369498Z       }
2026-06-21T04:47:53.9369617Z     },
2026-06-21T04:47:53.9369723Z     {
2026-06-21T04:47:53.9369866Z       "id": "REQ-MANIFEST-1",
2026-06-21T04:47:53.9370109Z       "title": "Per-adapter manifest with adapter_name and min_spt_core_version",
2026-06-21T04:47:53.9370367Z       "requiredStages": [
2026-06-21T04:47:53.9370489Z         "doc",
2026-06-21T04:47:53.9370609Z         "impl",
2026-06-21T04:47:53.9370725Z         "unit"
2026-06-21T04:47:53.9370842Z       ],
2026-06-21T04:47:53.9370971Z       "stages": {
2026-06-21T04:47:53.9371098Z         "doc": {
2026-06-21T04:47:53.9371225Z           "complete": true,
2026-06-21T04:47:53.9371335Z           "evidence": [
2026-06-21T04:47:53.9371450Z             {
2026-06-21T04:47:53.9371587Z               "path": "docs/MANIFEST.md",
2026-06-21T04:47:53.9371712Z               "line": 19
2026-06-21T04:47:53.9371826Z             }
2026-06-21T04:47:53.9371932Z           ]
2026-06-21T04:47:53.9372055Z         },
2026-06-21T04:47:53.9372169Z         "impl": {
2026-06-21T04:47:53.9372304Z           "complete": true,
2026-06-21T04:47:53.9372427Z           "evidence": [
2026-06-21T04:47:53.9372551Z             {
2026-06-21T04:47:53.9372718Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:53.9372851Z               "line": 18
2026-06-21T04:47:53.9372972Z             }
2026-06-21T04:47:53.9373080Z           ]
2026-06-21T04:47:53.9373191Z         },
2026-06-21T04:47:53.9373305Z         "int": {
2026-06-21T04:47:53.9373428Z           "complete": false,
2026-06-21T04:47:53.9373537Z           "evidence": []
2026-06-21T04:47:53.9373641Z         },
2026-06-21T04:47:53.9373750Z         "unit": {
2026-06-21T04:47:53.9373854Z           "complete": true,
2026-06-21T04:47:53.9373965Z           "evidence": [
2026-06-21T04:47:53.9374064Z             {
2026-06-21T04:47:53.9374213Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:53.9374322Z               "line": 1029
2026-06-21T04:47:53.9374421Z             },
2026-06-21T04:47:53.9374523Z             {
2026-06-21T04:47:53.9374655Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:53.9374760Z               "line": 1325
2026-06-21T04:47:53.9374857Z             },
2026-06-21T04:47:53.9374965Z             {
2026-06-21T04:47:53.9375108Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:53.9375209Z               "line": 1337
2026-06-21T04:47:53.9375318Z             },
2026-06-21T04:47:53.9375418Z             {
2026-06-21T04:47:53.9375561Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:53.9375666Z               "line": 1348
2026-06-21T04:47:53.9375772Z             },
2026-06-21T04:47:53.9375867Z             {
2026-06-21T04:47:53.9376010Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:53.9376130Z               "line": 1365
2026-06-21T04:47:53.9376229Z             },
2026-06-21T04:47:53.9376332Z             {
2026-06-21T04:47:53.9376466Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:53.9376572Z               "line": 1379
2026-06-21T04:47:53.9376675Z             },
2026-06-21T04:47:53.9376777Z             {
2026-06-21T04:47:53.9376910Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:53.9377024Z               "line": 1495
2026-06-21T04:47:53.9377130Z             },
2026-06-21T04:47:53.9377244Z             {
2026-06-21T04:47:53.9377372Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:53.9377487Z               "line": 1510
2026-06-21T04:47:53.9377692Z             },
2026-06-21T04:47:53.9377797Z             {
2026-06-21T04:47:53.9377935Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:53.9378050Z               "line": 1621
2026-06-21T04:47:53.9378159Z             },
2026-06-21T04:47:53.9378254Z             {
2026-06-21T04:47:53.9378394Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:53.9378497Z               "line": 1632
2026-06-21T04:47:53.9378602Z             }
2026-06-21T04:47:53.9378706Z           ]
2026-06-21T04:47:53.9378810Z         }
2026-06-21T04:47:53.9378913Z       }
2026-06-21T04:47:53.9379076Z     },
2026-06-21T04:47:53.9379276Z     {
2026-06-21T04:47:53.9379396Z       "id": "REQ-MANIFEST-2",
2026-06-21T04:47:53.9379935Z       "title": "Adapter profiles — sparse leaf-replace overlays (shipped + local), composite <adapter>:<profile> addressing, shadow-refusal, tighten-only consent floors",
2026-06-21T04:47:53.9380035Z       "requiredStages": [
2026-06-21T04:47:53.9380153Z         "doc",
2026-06-21T04:47:53.9380254Z         "impl",
2026-06-21T04:47:53.9380354Z         "unit"
2026-06-21T04:47:53.9380459Z       ],
2026-06-21T04:47:53.9380559Z       "stages": {
2026-06-21T04:47:53.9380665Z         "doc": {
2026-06-21T04:47:53.9380759Z           "complete": true,
2026-06-21T04:47:53.9380864Z           "evidence": [
2026-06-21T04:47:53.9380965Z             {
2026-06-21T04:47:53.9381083Z               "path": "CONTEXT.md",
2026-06-21T04:47:53.9381194Z               "line": 75
2026-06-21T04:47:53.9381290Z             }
2026-06-21T04:47:53.9381383Z           ]
2026-06-21T04:47:53.9381483Z         },
2026-06-21T04:47:53.9381583Z         "impl": {
2026-06-21T04:47:53.9381705Z           "complete": true,
2026-06-21T04:47:53.9381809Z           "evidence": [
2026-06-21T04:47:53.9381915Z             {
2026-06-21T04:47:53.9382048Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:53.9382157Z               "line": 82
2026-06-21T04:47:53.9382249Z             },
2026-06-21T04:47:53.9382353Z             {
2026-06-21T04:47:53.9382497Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T04:47:53.9382592Z               "line": 15
2026-06-21T04:47:53.9382696Z             },
2026-06-21T04:47:53.9382797Z             {
2026-06-21T04:47:53.9382939Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T04:47:53.9383044Z               "line": 65
2026-06-21T04:47:53.9383150Z             },
2026-06-21T04:47:53.9383254Z             {
2026-06-21T04:47:53.9383388Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T04:47:53.9383494Z               "line": 83
2026-06-21T04:47:53.9383592Z             },
2026-06-21T04:47:53.9383707Z             {
2026-06-21T04:47:53.9383833Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T04:47:53.9383945Z               "line": 183
2026-06-21T04:47:53.9384054Z             },
2026-06-21T04:47:53.9384145Z             {
2026-06-21T04:47:53.9384281Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T04:47:53.9384395Z               "line": 527
2026-06-21T04:47:53.9384501Z             },
2026-06-21T04:47:53.9384600Z             {
2026-06-21T04:47:53.9384748Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T04:47:53.9384863Z               "line": 553
2026-06-21T04:47:53.9384962Z             },
2026-06-21T04:47:53.9385063Z             {
2026-06-21T04:47:53.9385197Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T04:47:53.9385306Z               "line": 671
2026-06-21T04:47:53.9385402Z             },
2026-06-21T04:47:53.9385501Z             {
2026-06-21T04:47:53.9385644Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T04:47:53.9385751Z               "line": 696
2026-06-21T04:47:53.9385855Z             },
2026-06-21T04:47:53.9385955Z             {
2026-06-21T04:47:53.9386089Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T04:47:53.9386198Z               "line": 719
2026-06-21T04:47:53.9386404Z             },
2026-06-21T04:47:53.9386507Z             {
2026-06-21T04:47:53.9386652Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T04:47:53.9386761Z               "line": 734
2026-06-21T04:47:53.9386860Z             },
2026-06-21T04:47:53.9386969Z             {
2026-06-21T04:47:53.9387099Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9387207Z               "line": 5567
2026-06-21T04:47:53.9387303Z             },
2026-06-21T04:47:53.9387394Z             {
2026-06-21T04:47:53.9387513Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9387628Z               "line": 5581
2026-06-21T04:47:53.9387728Z             },
2026-06-21T04:47:53.9387904Z             {
2026-06-21T04:47:53.9388023Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9388128Z               "line": 5615
2026-06-21T04:47:53.9388228Z             }
2026-06-21T04:47:53.9388333Z           ]
2026-06-21T04:47:53.9388423Z         },
2026-06-21T04:47:53.9388533Z         "int": {
2026-06-21T04:47:53.9388662Z           "complete": false,
2026-06-21T04:47:53.9388771Z           "evidence": []
2026-06-21T04:47:53.9388872Z         },
2026-06-21T04:47:53.9389033Z         "unit": {
2026-06-21T04:47:53.9389142Z           "complete": true,
2026-06-21T04:47:53.9389243Z           "evidence": [
2026-06-21T04:47:53.9389346Z             {
2026-06-21T04:47:53.9389488Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T04:47:53.9389593Z               "line": 921
2026-06-21T04:47:53.9389698Z             },
2026-06-21T04:47:53.9389793Z             {
2026-06-21T04:47:53.9389937Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T04:47:53.9390042Z               "line": 211
2026-06-21T04:47:53.9390131Z             },
2026-06-21T04:47:53.9390233Z             {
2026-06-21T04:47:53.9390375Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T04:47:53.9390475Z               "line": 272
2026-06-21T04:47:53.9390576Z             },
2026-06-21T04:47:53.9390685Z             {
2026-06-21T04:47:53.9390814Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T04:47:53.9390924Z               "line": 313
2026-06-21T04:47:53.9391029Z             },
2026-06-21T04:47:53.9391129Z             {
2026-06-21T04:47:53.9391267Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T04:47:53.9391362Z               "line": 325
2026-06-21T04:47:53.9391459Z             },
2026-06-21T04:47:53.9391549Z             {
2026-06-21T04:47:53.9391682Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T04:47:53.9391798Z               "line": 336
2026-06-21T04:47:53.9391892Z             },
2026-06-21T04:47:53.9392005Z             {
2026-06-21T04:47:53.9392133Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T04:47:53.9392242Z               "line": 345
2026-06-21T04:47:53.9392345Z             },
2026-06-21T04:47:53.9392441Z             {
2026-06-21T04:47:53.9392571Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T04:47:53.9392684Z               "line": 361
2026-06-21T04:47:53.9392785Z             },
2026-06-21T04:47:53.9392871Z             {
2026-06-21T04:47:53.9393023Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T04:47:53.9393129Z               "line": 444
2026-06-21T04:47:53.9393224Z             },
2026-06-21T04:47:53.9393328Z             {
2026-06-21T04:47:53.9393458Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T04:47:53.9393553Z               "line": 958
2026-06-21T04:47:53.9393648Z             },
2026-06-21T04:47:53.9393749Z             {
2026-06-21T04:47:53.9393891Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T04:47:53.9393996Z               "line": 982
2026-06-21T04:47:53.9394102Z             },
2026-06-21T04:47:53.9394205Z             {
2026-06-21T04:47:53.9394336Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T04:47:53.9394445Z               "line": 1008
2026-06-21T04:47:53.9394653Z             },
2026-06-21T04:47:53.9394762Z             {
2026-06-21T04:47:53.9394898Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T04:47:53.9395008Z               "line": 1027
2026-06-21T04:47:53.9395105Z             },
2026-06-21T04:47:53.9395208Z             {
2026-06-21T04:47:53.9395343Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T04:47:53.9395447Z               "line": 1058
2026-06-21T04:47:53.9395556Z             },
2026-06-21T04:47:53.9395653Z             {
2026-06-21T04:47:53.9395795Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T04:47:53.9395899Z               "line": 309
2026-06-21T04:47:53.9396128Z             },
2026-06-21T04:47:53.9396228Z             {
2026-06-21T04:47:53.9396362Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T04:47:53.9396471Z               "line": 606
2026-06-21T04:47:53.9396568Z             },
2026-06-21T04:47:53.9396673Z             {
2026-06-21T04:47:53.9396786Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9396907Z               "line": 8610
2026-06-21T04:47:53.9397006Z             },
2026-06-21T04:47:53.9397111Z             {
2026-06-21T04:47:53.9397236Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9397340Z               "line": 9558
2026-06-21T04:47:53.9397444Z             }
2026-06-21T04:47:53.9397529Z           ]
2026-06-21T04:47:53.9397630Z         }
2026-06-21T04:47:53.9397730Z       }
2026-06-21T04:47:53.9397839Z     },
2026-06-21T04:47:53.9397945Z     {
2026-06-21T04:47:53.9398053Z       "id": "REQ-MANIFEST-3",
2026-06-21T04:47:53.9398711Z       "title": "Adapter strings — [strings] KV tree, dot-path get-string resolving through the profile leaf-replace overlay, set-string editing a local profile's [strings] only; data-only (nothing executes a string)",
2026-06-21T04:47:53.9398837Z       "requiredStages": [
2026-06-21T04:47:53.9399041Z         "doc",
2026-06-21T04:47:53.9399152Z         "impl",
2026-06-21T04:47:53.9399641Z         "unit"
2026-06-21T04:47:53.9399845Z       ],
2026-06-21T04:47:53.9399982Z       "stages": {
2026-06-21T04:47:53.9400115Z         "doc": {
2026-06-21T04:47:53.9400258Z           "complete": true,
2026-06-21T04:47:53.9400387Z           "evidence": [
2026-06-21T04:47:53.9400512Z             {
2026-06-21T04:47:53.9400654Z               "path": "CONTEXT.md",
2026-06-21T04:47:53.9400783Z               "line": 81
2026-06-21T04:47:53.9400911Z             }
2026-06-21T04:47:53.9401036Z           ]
2026-06-21T04:47:53.9401150Z         },
2026-06-21T04:47:53.9401283Z         "impl": {
2026-06-21T04:47:53.9401422Z           "complete": true,
2026-06-21T04:47:53.9401551Z           "evidence": [
2026-06-21T04:47:53.9401680Z             {
2026-06-21T04:47:53.9401874Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:53.9401999Z               "line": 92
2026-06-21T04:47:53.9402123Z             },
2026-06-21T04:47:53.9402247Z             {
2026-06-21T04:47:53.9402443Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T04:47:53.9402579Z               "line": 101
2026-06-21T04:47:53.9402703Z             },
2026-06-21T04:47:53.9402816Z             {
2026-06-21T04:47:53.9403002Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T04:47:53.9403126Z               "line": 132
2026-06-21T04:47:53.9403254Z             },
2026-06-21T04:47:53.9403384Z             {
2026-06-21T04:47:53.9403563Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T04:47:53.9403694Z               "line": 577
2026-06-21T04:47:53.9403817Z             },
2026-06-21T04:47:53.9403941Z             {
2026-06-21T04:47:53.9404103Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T04:47:53.9404241Z               "line": 633
2026-06-21T04:47:53.9404356Z             },
2026-06-21T04:47:53.9404475Z             {
2026-06-21T04:47:53.9404623Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9404760Z               "line": 5628
2026-06-21T04:47:53.9404891Z             },
2026-06-21T04:47:53.9405275Z             {
2026-06-21T04:47:53.9405425Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9405563Z               "line": 5654
2026-06-21T04:47:53.9405684Z             }
2026-06-21T04:47:53.9405806Z           ]
2026-06-21T04:47:53.9405932Z         },
2026-06-21T04:47:53.9406064Z         "int": {
2026-06-21T04:47:53.9406203Z           "complete": false,
2026-06-21T04:47:53.9406336Z           "evidence": []
2026-06-21T04:47:53.9406464Z         },
2026-06-21T04:47:53.9406589Z         "unit": {
2026-06-21T04:47:53.9406717Z           "complete": true,
2026-06-21T04:47:53.9406847Z           "evidence": [
2026-06-21T04:47:53.9407094Z             {
2026-06-21T04:47:53.9407279Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T04:47:53.9407414Z               "line": 371
2026-06-21T04:47:53.9407539Z             },
2026-06-21T04:47:53.9407661Z             {
2026-06-21T04:47:53.9407839Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T04:47:53.9407970Z               "line": 429
2026-06-21T04:47:53.9408094Z             },
2026-06-21T04:47:53.9408215Z             {
2026-06-21T04:47:53.9408399Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T04:47:53.9408524Z               "line": 1082
2026-06-21T04:47:53.9408647Z             },
2026-06-21T04:47:53.9408777Z             {
2026-06-21T04:47:53.9408924Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9409167Z               "line": 8703
2026-06-21T04:47:53.9409276Z             }
2026-06-21T04:47:53.9409412Z           ]
2026-06-21T04:47:53.9409563Z         }
2026-06-21T04:47:53.9409688Z       }
2026-06-21T04:47:53.9409811Z     },
2026-06-21T04:47:53.9409935Z     {
2026-06-21T04:47:53.9410084Z       "id": "REQ-MANIFEST-4",
2026-06-21T04:47:53.9411091Z       "title": "Keyword hints — [[hints]] {keywords (literal/regex), text}; spt api hint --session emits at most one matched hint per message, once per session (seen-set), declaration-order first match; profiles overlay [[hints]] by leaf-replace",
2026-06-21T04:47:53.9411251Z       "requiredStages": [
2026-06-21T04:47:53.9411382Z         "doc",
2026-06-21T04:47:53.9411500Z         "impl",
2026-06-21T04:47:53.9411620Z         "unit"
2026-06-21T04:47:53.9411739Z       ],
2026-06-21T04:47:53.9411862Z       "stages": {
2026-06-21T04:47:53.9411992Z         "doc": {
2026-06-21T04:47:53.9412125Z           "complete": true,
2026-06-21T04:47:53.9412254Z           "evidence": [
2026-06-21T04:47:53.9412377Z             {
2026-06-21T04:47:53.9412530Z               "path": "CONTEXT.md",
2026-06-21T04:47:53.9412645Z               "line": 88
2026-06-21T04:47:53.9412768Z             }
2026-06-21T04:47:53.9412903Z           ]
2026-06-21T04:47:53.9413026Z         },
2026-06-21T04:47:53.9413148Z         "impl": {
2026-06-21T04:47:53.9413278Z           "complete": true,
2026-06-21T04:47:53.9413395Z           "evidence": [
2026-06-21T04:47:53.9413494Z             {
2026-06-21T04:47:53.9413653Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:53.9413766Z               "line": 100
2026-06-21T04:47:53.9413872Z             },
2026-06-21T04:47:53.9413977Z             {
2026-06-21T04:47:53.9414123Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:53.9414234Z               "line": 183
2026-06-21T04:47:53.9414335Z             },
2026-06-21T04:47:53.9414443Z             {
2026-06-21T04:47:53.9414583Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:53.9422103Z               "line": 83
2026-06-21T04:47:53.9422214Z             },
2026-06-21T04:47:53.9422309Z             {
2026-06-21T04:47:53.9422475Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:53.9422599Z               "line": 629
2026-06-21T04:47:53.9422699Z             },
2026-06-21T04:47:53.9422810Z             {
2026-06-21T04:47:53.9422957Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:53.9423066Z               "line": 654
2026-06-21T04:47:53.9423343Z             }
2026-06-21T04:47:53.9423454Z           ]
2026-06-21T04:47:53.9423553Z         },
2026-06-21T04:47:53.9423652Z         "int": {
2026-06-21T04:47:53.9423771Z           "complete": false,
2026-06-21T04:47:53.9423875Z           "evidence": []
2026-06-21T04:47:53.9423984Z         },
2026-06-21T04:47:53.9424088Z         "unit": {
2026-06-21T04:47:53.9424199Z           "complete": true,
2026-06-21T04:47:53.9424303Z           "evidence": [
2026-06-21T04:47:53.9424408Z             {
2026-06-21T04:47:53.9424566Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:53.9424674Z               "line": 1445
2026-06-21T04:47:53.9424781Z             },
2026-06-21T04:47:53.9424975Z             {
2026-06-21T04:47:53.9425138Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:53.9425242Z               "line": 1478
2026-06-21T04:47:53.9425342Z             },
2026-06-21T04:47:53.9425448Z             {
2026-06-21T04:47:53.9425590Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:53.9425696Z               "line": 988
2026-06-21T04:47:53.9425791Z             }
2026-06-21T04:47:53.9425895Z           ]
2026-06-21T04:47:53.9426001Z         }
2026-06-21T04:47:53.9426106Z       }
2026-06-21T04:47:53.9426214Z     },
2026-06-21T04:47:53.9426318Z     {
2026-06-21T04:47:53.9426437Z       "id": "REQ-MANIFEST-5",
2026-06-21T04:47:53.9429534Z       "title": "File-backed adapter [strings] (M12-W3-T3.1): a [strings] dot-path value MAY be an inline-table FILE POINTER `key = { file = \"rel/path\" }` resolved to the file's contents at get-string time, keeping large bodies (skill-instructions, hint text) out of the manifest. A value-position table with a `file` key IS the pointer form (reserved — cannot double as data). Per-adapter aux storage `adapters/<adapter>/strings/`; pointers resolve relative to it with CONTAINMENT (reject `..`/absolute escaping the dir). UPDATE-SAFETY: a LOCAL profile's file-pointers resolve relative to the user-owned local-profile dir (NOT adapter-shipped strings/, which adapter updates overwrite), or the local profile inlines. Validate-at-register (fail-fast on a bad/escaping/missing pointer) + LAZY read at get-string (live file edits reflect, no re-register) + skip-diagnostics on missing-at-read (no hard-crash, mirrors [digest]). Rides the same leaf-replace profile overlay as the rest of [strings].",
2026-06-21T04:47:53.9433394Z       "requiredStages": [
2026-06-21T04:47:53.9433507Z         "doc",
2026-06-21T04:47:53.9433612Z         "impl",
2026-06-21T04:47:53.9433713Z         "unit"
2026-06-21T04:47:53.9433813Z       ],
2026-06-21T04:47:53.9433917Z       "stages": {
2026-06-21T04:47:53.9434014Z         "doc": {
2026-06-21T04:47:53.9434137Z           "complete": true,
2026-06-21T04:47:53.9434250Z           "evidence": [
2026-06-21T04:47:53.9434345Z             {
2026-06-21T04:47:53.9434468Z               "path": "CONTEXT.md",
2026-06-21T04:47:53.9434577Z               "line": 83
2026-06-21T04:47:53.9434677Z             }
2026-06-21T04:47:53.9434788Z           ]
2026-06-21T04:47:53.9434882Z         },
2026-06-21T04:47:53.9434987Z         "impl": {
2026-06-21T04:47:53.9435092Z           "complete": true,
2026-06-21T04:47:53.9435201Z           "evidence": [
2026-06-21T04:47:53.9435297Z             {
2026-06-21T04:47:53.9435450Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T04:47:53.9435563Z               "line": 120
2026-06-21T04:47:53.9435660Z             }
2026-06-21T04:47:53.9435764Z           ]
2026-06-21T04:47:53.9435860Z         },
2026-06-21T04:47:53.9435966Z         "int": {
2026-06-21T04:47:53.9436084Z           "complete": false,
2026-06-21T04:47:53.9436189Z           "evidence": []
2026-06-21T04:47:53.9436295Z         },
2026-06-21T04:47:53.9436398Z         "unit": {
2026-06-21T04:47:53.9436504Z           "complete": true,
2026-06-21T04:47:53.9436605Z           "evidence": [
2026-06-21T04:47:53.9436699Z             {
2026-06-21T04:47:53.9436855Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T04:47:53.9437091Z               "line": 404
2026-06-21T04:47:53.9437201Z             },
2026-06-21T04:47:53.9437292Z             {
2026-06-21T04:47:53.9437453Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T04:47:53.9437554Z               "line": 1155
2026-06-21T04:47:53.9437659Z             },
2026-06-21T04:47:53.9437763Z             {
2026-06-21T04:47:53.9437907Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T04:47:53.9438007Z               "line": 1184
2026-06-21T04:47:53.9438097Z             },
2026-06-21T04:47:53.9438203Z             {
2026-06-21T04:47:53.9438331Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T04:47:53.9438537Z               "line": 1224
2026-06-21T04:47:53.9438636Z             },
2026-06-21T04:47:53.9438727Z             {
2026-06-21T04:47:53.9438866Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T04:47:53.9439046Z               "line": 1239
2026-06-21T04:47:53.9439148Z             }
2026-06-21T04:47:53.9439247Z           ]
2026-06-21T04:47:53.9439342Z         }
2026-06-21T04:47:53.9439438Z       }
2026-06-21T04:47:53.9439534Z     },
2026-06-21T04:47:53.9439637Z     {
2026-06-21T04:47:53.9439746Z       "id": "REQ-MANIFEST-6",
2026-06-21T04:47:53.9441967Z       "title": "Cross-adapter fallback target addressing (M12-W3-T3.2): a cross-adapter fallback target is addressed as `<adapter>:<profile>` (not just a bare adapter_name), resolved through the one composite-addressing resolver (registry::resolve_option) at every adapter-option read site so a fallback may select a shipped/local profile (e.g. a `ccs` profile). CONTEXT.md §cross-adapter-fallback reconciled (\"ccs is a profile; cross-adapter fallback may target <adapter>:<profile>\"). Contract-only this milestone: the node-wide fallback SETTING + its rate-limit invocation are deferred to the consuming milestone (the runtime path does not exist yet); this REQ guarantees the ADDRESSING resolves.",
2026-06-21T04:47:53.9442091Z       "requiredStages": [
2026-06-21T04:47:53.9442194Z         "doc",
2026-06-21T04:47:53.9442293Z         "unit"
2026-06-21T04:47:53.9442394Z       ],
2026-06-21T04:47:53.9442494Z       "stages": {
2026-06-21T04:47:53.9442594Z         "doc": {
2026-06-21T04:47:53.9442694Z           "complete": true,
2026-06-21T04:47:53.9442809Z           "evidence": [
2026-06-21T04:47:53.9442908Z             {
2026-06-21T04:47:53.9443024Z               "path": "CONTEXT.md",
2026-06-21T04:47:53.9443143Z               "line": 141
2026-06-21T04:47:53.9443242Z             }
2026-06-21T04:47:53.9443339Z           ]
2026-06-21T04:47:53.9443443Z         },
2026-06-21T04:47:53.9443547Z         "impl": {
2026-06-21T04:47:53.9443658Z           "complete": false,
2026-06-21T04:47:53.9443767Z           "evidence": []
2026-06-21T04:47:53.9443872Z         },
2026-06-21T04:47:53.9443978Z         "int": {
2026-06-21T04:47:53.9444081Z           "complete": false,
2026-06-21T04:47:53.9444191Z           "evidence": []
2026-06-21T04:47:53.9444298Z         },
2026-06-21T04:47:53.9444392Z         "unit": {
2026-06-21T04:47:53.9444506Z           "complete": true,
2026-06-21T04:47:53.9444617Z           "evidence": [
2026-06-21T04:47:53.9444716Z             {
2026-06-21T04:47:53.9444877Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T04:47:53.9444982Z               "line": 1261
2026-06-21T04:47:53.9445084Z             }
2026-06-21T04:47:53.9445184Z           ]
2026-06-21T04:47:53.9445286Z         }
2026-06-21T04:47:53.9445390Z       }
2026-06-21T04:47:53.9445489Z     },
2026-06-21T04:47:53.9445596Z     {
2026-06-21T04:47:53.9445714Z       "id": "REQ-MANIFEST-7",
2026-06-21T04:47:53.9448778Z       "title": "Adapter-declared shortcut basename (M12-W2 follow-on): an optional `[adapter] shortcut_basename` manifest field names the basename the `spt endpoint run` picker bakes into the generated `<basename>-<id>` launcher shortcut (REQ-RUN-SHORTCUT). Absent ⇒ the harness-agnostic default `spt` (→ `spt-<id>`); an adapter sets it to brand its shortcuts (claude-spt → `cc` → `cc-<id>`), so the Claude-Code-ness lives in the PUBLISHED adapter manifest, never hardcoded in spt-core. The picker reads it from the RESOLVED manifest of the selected adapter (registry::resolve_option), falling back to `spt` when absent/empty/unresolvable. Additive + N-1-safe (serde-default Option, omitted from serialization when absent; old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). Documented in docs/MANIFEST.md `[adapter]` section + the claude-spt worked example — the adapter-author contract perri builds spt-claude-code against.",
2026-06-21T04:47:53.9449102Z       "requiredStages": [
2026-06-21T04:47:53.9449306Z         "doc",
2026-06-21T04:47:53.9449412Z         "impl",
2026-06-21T04:47:53.9449539Z         "unit"
2026-06-21T04:47:53.9449635Z       ],
2026-06-21T04:47:53.9449741Z       "stages": {
2026-06-21T04:47:53.9449844Z         "doc": {
2026-06-21T04:47:53.9449954Z           "complete": true,
2026-06-21T04:47:53.9450061Z           "evidence": [
2026-06-21T04:47:53.9450168Z             {
2026-06-21T04:47:53.9450291Z               "path": "docs/MANIFEST.md",
2026-06-21T04:47:53.9450387Z               "line": 35
2026-06-21T04:47:53.9450493Z             }
2026-06-21T04:47:53.9450601Z           ]
2026-06-21T04:47:53.9450698Z         },
2026-06-21T04:47:53.9450808Z         "impl": {
2026-06-21T04:47:53.9450916Z           "complete": true,
2026-06-21T04:47:53.9451022Z           "evidence": [
2026-06-21T04:47:53.9451117Z             {
2026-06-21T04:47:53.9451255Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T04:47:53.9451361Z               "line": 54
2026-06-21T04:47:53.9451455Z             }
2026-06-21T04:47:53.9451555Z           ]
2026-06-21T04:47:53.9451657Z         },
2026-06-21T04:47:53.9451761Z         "int": {
2026-06-21T04:47:53.9451865Z           "complete": false,
2026-06-21T04:47:53.9451967Z           "evidence": []
2026-06-21T04:47:53.9452066Z         },
2026-06-21T04:47:53.9452161Z         "unit": {
2026-06-21T04:47:53.9452277Z           "complete": true,
2026-06-21T04:47:53.9452380Z           "evidence": [
2026-06-21T04:47:53.9452484Z             {
2026-06-21T04:47:53.9452632Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:53.9452745Z               "line": 1638
2026-06-21T04:47:53.9452844Z             }
2026-06-21T04:47:53.9452944Z           ]
2026-06-21T04:47:53.9453046Z         }
2026-06-21T04:47:53.9453149Z       }
2026-06-21T04:47:53.9453255Z     },
2026-06-21T04:47:53.9453355Z     {
2026-06-21T04:47:53.9453468Z       "id": "REQ-MANIFEST-8",
2026-06-21T04:47:53.9455706Z       "title": "[adapter] host_binaries declares the harness executable basenames a kind=\"harness\" adapter hosts agents inside (e.g. host_binaries = [\"claude\"]); bind-time pid→exe-basename match (case-insensitive, .exe-stripped) over the seed's parent_pid selects the candidate adapter set; zero matches → a friendly error naming the binary + the --adapter escape hatch. Additive + N-1-safe: optional Vec<String>, #[serde(default, skip_serializing_if = \"Vec::is_empty\")] (omitted-serialized like shortcut_basename, old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). The match-key for ADR-0021 adapter-agnostic bind-time resolution. (v0.9.0)",
2026-06-21T04:47:53.9455826Z       "requiredStages": [
2026-06-21T04:47:53.9455936Z         "doc",
2026-06-21T04:47:53.9456045Z         "impl",
2026-06-21T04:47:53.9456146Z         "unit",
2026-06-21T04:47:53.9456251Z         "int"
2026-06-21T04:47:53.9456350Z       ],
2026-06-21T04:47:53.9456456Z       "stages": {
2026-06-21T04:47:53.9456556Z         "doc": {
2026-06-21T04:47:53.9456669Z           "complete": true,
2026-06-21T04:47:53.9456776Z           "evidence": [
2026-06-21T04:47:53.9456879Z             {
2026-06-21T04:47:53.9456999Z               "path": "CONTEXT.md",
2026-06-21T04:47:53.9457100Z               "line": 184
2026-06-21T04:47:53.9457208Z             },
2026-06-21T04:47:53.9457314Z             {
2026-06-21T04:47:53.9457537Z               "path": "docs/MANIFEST.md",
2026-06-21T04:47:53.9457643Z               "line": 46
2026-06-21T04:47:53.9457730Z             }
2026-06-21T04:47:53.9457838Z           ]
2026-06-21T04:47:53.9457933Z         },
2026-06-21T04:47:53.9458042Z         "impl": {
2026-06-21T04:47:53.9458155Z           "complete": true,
2026-06-21T04:47:53.9458259Z           "evidence": [
2026-06-21T04:47:53.9458369Z             {
2026-06-21T04:47:53.9458516Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T04:47:53.9458611Z               "line": 222
2026-06-21T04:47:53.9458704Z             },
2026-06-21T04:47:53.9458808Z             {
2026-06-21T04:47:53.9459137Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T04:47:53.9459236Z               "line": 306
2026-06-21T04:47:53.9459333Z             }
2026-06-21T04:47:53.9459437Z           ]
2026-06-21T04:47:53.9459537Z         },
2026-06-21T04:47:53.9459628Z         "int": {
2026-06-21T04:47:53.9459747Z           "complete": true,
2026-06-21T04:47:53.9459852Z           "evidence": [
2026-06-21T04:47:53.9459943Z             {
2026-06-21T04:47:53.9460094Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T04:47:53.9460200Z               "line": 18
2026-06-21T04:47:53.9460297Z             }
2026-06-21T04:47:53.9460385Z           ]
2026-06-21T04:47:53.9460491Z         },
2026-06-21T04:47:53.9460597Z         "unit": {
2026-06-21T04:47:53.9460705Z           "complete": true,
2026-06-21T04:47:53.9460818Z           "evidence": [
2026-06-21T04:47:53.9460914Z             {
2026-06-21T04:47:53.9461057Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:53.9461166Z               "line": 1656
2026-06-21T04:47:53.9461268Z             },
2026-06-21T04:47:53.9461368Z             {
2026-06-21T04:47:53.9461495Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T04:47:53.9461606Z               "line": 316
2026-06-21T04:47:53.9461692Z             },
2026-06-21T04:47:53.9461800Z             {
2026-06-21T04:47:53.9461935Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T04:47:53.9462044Z               "line": 332
2026-06-21T04:47:53.9462149Z             },
2026-06-21T04:47:53.9462245Z             {
2026-06-21T04:47:53.9462369Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T04:47:53.9462474Z               "line": 345
2026-06-21T04:47:53.9462579Z             },
2026-06-21T04:47:53.9462687Z             {
2026-06-21T04:47:53.9462817Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T04:47:53.9462922Z               "line": 422
2026-06-21T04:47:53.9463016Z             },
2026-06-21T04:47:53.9463116Z             {
2026-06-21T04:47:53.9463249Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T04:47:53.9463347Z               "line": 436
2026-06-21T04:47:53.9463447Z             }
2026-06-21T04:47:53.9463539Z           ]
2026-06-21T04:47:53.9463643Z         }
2026-06-21T04:47:53.9463738Z       }
2026-06-21T04:47:53.9463829Z     },
2026-06-21T04:47:53.9463929Z     {
2026-06-21T04:47:53.9464048Z       "id": "REQ-MESH-1",
2026-06-21T04:47:53.9466186Z       "title": "Membership proof (seed-proof): symmetric current-epoch seed-knowledge replaces is_trusted at EVERY inbound gate (registry apply, WAN receive, sync, notif, connection accept). MK = HKDF(seed, domain ‖ subnet_id ‖ seed_epoch); mutual channel-bound challenge-response at connect (transcript binds both handshake-proven node pubkeys, both nonces, subnet_id, seed_epoch, role); verified once per connection, cached on the broker ConnEntry, kept warm via QUIC keep-alive so re-proof is restart/partition/rotation-only. Exact-epoch match (re-seed is the sole N-1 exception). SECURITY INVARIANTS: channel-bound (no cross-connection replay), mutual, accepts a member it never paired (the mesh property).",
2026-06-21T04:47:53.9466309Z       "requiredStages": [
2026-06-21T04:47:53.9466416Z         "impl",
2026-06-21T04:47:53.9466515Z         "unit",
2026-06-21T04:47:53.9466615Z         "int"
2026-06-21T04:47:53.9466821Z       ],
2026-06-21T04:47:53.9466915Z       "stages": {
2026-06-21T04:47:53.9467026Z         "doc": {
2026-06-21T04:47:53.9467145Z           "complete": false,
2026-06-21T04:47:53.9467273Z           "evidence": []
2026-06-21T04:47:53.9467384Z         },
2026-06-21T04:47:53.9467483Z         "impl": {
2026-06-21T04:47:53.9467597Z           "complete": true,
2026-06-21T04:47:53.9467698Z           "evidence": [
2026-06-21T04:47:53.9467807Z             {
2026-06-21T04:47:53.9467947Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T04:47:53.9468060Z               "line": 922
2026-06-21T04:47:53.9468155Z             },
2026-06-21T04:47:53.9468352Z             {
2026-06-21T04:47:53.9468507Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T04:47:53.9468612Z               "line": 38
2026-06-21T04:47:53.9468716Z             },
2026-06-21T04:47:53.9468814Z             {
2026-06-21T04:47:53.9469054Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T04:47:53.9469153Z               "line": 161
2026-06-21T04:47:53.9469254Z             },
2026-06-21T04:47:53.9469369Z             {
2026-06-21T04:47:53.9469501Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T04:47:53.9469598Z               "line": 206
2026-06-21T04:47:53.9469702Z             },
2026-06-21T04:47:53.9469801Z             {
2026-06-21T04:47:53.9469950Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T04:47:53.9470049Z               "line": 57
2026-06-21T04:47:53.9470149Z             },
2026-06-21T04:47:53.9470246Z             {
2026-06-21T04:47:53.9470397Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T04:47:53.9470503Z               "line": 24
2026-06-21T04:47:53.9470603Z             },
2026-06-21T04:47:53.9470712Z             {
2026-06-21T04:47:53.9470866Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T04:47:53.9470969Z               "line": 142
2026-06-21T04:47:53.9471056Z             },
2026-06-21T04:47:53.9471167Z             {
2026-06-21T04:47:53.9471307Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T04:47:53.9471402Z               "line": 162
2026-06-21T04:47:53.9471513Z             }
2026-06-21T04:47:53.9471613Z           ]
2026-06-21T04:47:53.9471717Z         },
2026-06-21T04:47:53.9471818Z         "int": {
2026-06-21T04:47:53.9471928Z           "complete": true,
2026-06-21T04:47:53.9472032Z           "evidence": [
2026-06-21T04:47:53.9472176Z             {
2026-06-21T04:47:53.9472327Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T04:47:53.9472419Z               "line": 67
2026-06-21T04:47:53.9472528Z             },
2026-06-21T04:47:53.9472623Z             {
2026-06-21T04:47:53.9472763Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T04:47:53.9472866Z               "line": 93
2026-06-21T04:47:53.9472967Z             },
2026-06-21T04:47:53.9473073Z             {
2026-06-21T04:47:53.9473214Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T04:47:53.9473324Z               "line": 117
2026-06-21T04:47:53.9473421Z             },
2026-06-21T04:47:53.9473529Z             {
2026-06-21T04:47:53.9473671Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T04:47:53.9473776Z               "line": 134
2026-06-21T04:47:53.9473884Z             }
2026-06-21T04:47:53.9473969Z           ]
2026-06-21T04:47:53.9474075Z         },
2026-06-21T04:47:53.9474174Z         "unit": {
2026-06-21T04:47:53.9474288Z           "complete": true,
2026-06-21T04:47:53.9474394Z           "evidence": [
2026-06-21T04:47:53.9474485Z             {
2026-06-21T04:47:53.9474627Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T04:47:53.9474733Z               "line": 427
2026-06-21T04:47:53.9474842Z             },
2026-06-21T04:47:53.9474942Z             {
2026-06-21T04:47:53.9475086Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T04:47:53.9475290Z               "line": 376
2026-06-21T04:47:53.9475395Z             },
2026-06-21T04:47:53.9475500Z             {
2026-06-21T04:47:53.9475649Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T04:47:53.9475753Z               "line": 412
2026-06-21T04:47:53.9475848Z             },
2026-06-21T04:47:53.9475954Z             {
2026-06-21T04:47:53.9476101Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T04:47:53.9476206Z               "line": 427
2026-06-21T04:47:53.9476312Z             },
2026-06-21T04:47:53.9476410Z             {
2026-06-21T04:47:53.9476557Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T04:47:53.9476746Z               "line": 438
2026-06-21T04:47:53.9476850Z             },
2026-06-21T04:47:53.9476951Z             {
2026-06-21T04:47:53.9477094Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T04:47:53.9477203Z               "line": 449
2026-06-21T04:47:53.9477300Z             },
2026-06-21T04:47:53.9477395Z             {
2026-06-21T04:47:53.9477538Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T04:47:53.9477653Z               "line": 460
2026-06-21T04:47:53.9477757Z             },
2026-06-21T04:47:53.9477852Z             {
2026-06-21T04:47:53.9478005Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T04:47:53.9478114Z               "line": 496
2026-06-21T04:47:53.9478211Z             },
2026-06-21T04:47:53.9478310Z             {
2026-06-21T04:47:53.9478448Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T04:47:53.9478559Z               "line": 519
2026-06-21T04:47:53.9478662Z             },
2026-06-21T04:47:53.9478763Z             {
2026-06-21T04:47:53.9478912Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T04:47:53.9479129Z               "line": 546
2026-06-21T04:47:53.9479238Z             }
2026-06-21T04:47:53.9479332Z           ]
2026-06-21T04:47:53.9479451Z         }
2026-06-21T04:47:53.9479547Z       }
2026-06-21T04:47:53.9479642Z     },
2026-06-21T04:47:53.9479742Z     {
2026-06-21T04:47:53.9479848Z       "id": "REQ-MESH-2",
2026-06-21T04:47:53.9482479Z       "title": "Member roster: node-level union-merge grow-set (per member: pubkey, label, machine_id, last-known address, last-seen — NOT the seed), the discovery directory the mesh dials by. Seeded IN FULL at pairing (seed-holder hands joiner the whole current roster, incl. offline members — folds in deferred pairing-time hostname capture + post-join address seeding); each node authors its own entry stamped with its lease_epoch, merged strictly-greater-wins (the node_label lease); exchanged only over seed-proof'd member connections; forgery-inert (a fake entry names a pubkey that still can't seed-proof). Removal needs a TOMBSTONE — a per-pubkey revoked marker that propagates, dominates the entry, gates admission (seed-proof ∧ ¬tombstoned), and prevents reinsert; cleared by a completed re-pair of that pubkey. Persists through silence (offline member keeps its entry).",
2026-06-21T04:47:53.9482606Z       "requiredStages": [
2026-06-21T04:47:53.9482698Z         "impl",
2026-06-21T04:47:53.9482803Z         "unit",
2026-06-21T04:47:53.9482907Z         "int"
2026-06-21T04:47:53.9483008Z       ],
2026-06-21T04:47:53.9483103Z       "stages": {
2026-06-21T04:47:53.9483207Z         "doc": {
2026-06-21T04:47:53.9483313Z           "complete": false,
2026-06-21T04:47:53.9483431Z           "evidence": []
2026-06-21T04:47:53.9483536Z         },
2026-06-21T04:47:53.9483638Z         "impl": {
2026-06-21T04:47:53.9483746Z           "complete": true,
2026-06-21T04:47:53.9483856Z           "evidence": [
2026-06-21T04:47:53.9483962Z             {
2026-06-21T04:47:53.9484094Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T04:47:53.9484203Z               "line": 757
2026-06-21T04:47:53.9484308Z             },
2026-06-21T04:47:53.9484406Z             {
2026-06-21T04:47:53.9484548Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T04:47:53.9484758Z               "line": 118
2026-06-21T04:47:53.9484868Z             },
2026-06-21T04:47:53.9484964Z             {
2026-06-21T04:47:53.9485106Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T04:47:53.9485216Z               "line": 347
2026-06-21T04:47:53.9485317Z             },
2026-06-21T04:47:53.9485426Z             {
2026-06-21T04:47:53.9485565Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T04:47:53.9485674Z               "line": 389
2026-06-21T04:47:53.9485774Z             },
2026-06-21T04:47:53.9485870Z             {
2026-06-21T04:47:53.9486008Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T04:47:53.9486270Z               "line": 403
2026-06-21T04:47:53.9486375Z             },
2026-06-21T04:47:53.9486476Z             {
2026-06-21T04:47:53.9486618Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T04:47:53.9486733Z               "line": 492
2026-06-21T04:47:53.9486834Z             },
2026-06-21T04:47:53.9486938Z             {
2026-06-21T04:47:53.9487074Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T04:47:53.9487180Z               "line": 507
2026-06-21T04:47:53.9487278Z             },
2026-06-21T04:47:53.9487386Z             {
2026-06-21T04:47:53.9487531Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T04:47:53.9487635Z               "line": 534
2026-06-21T04:47:53.9487735Z             },
2026-06-21T04:47:53.9487831Z             {
2026-06-21T04:47:53.9487983Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T04:47:53.9488088Z               "line": 207
2026-06-21T04:47:53.9488193Z             },
2026-06-21T04:47:53.9488298Z             {
2026-06-21T04:47:53.9488437Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T04:47:53.9488546Z               "line": 755
2026-06-21T04:47:53.9488646Z             },
2026-06-21T04:47:53.9488747Z             {
2026-06-21T04:47:53.9488889Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T04:47:53.9489095Z               "line": 816
2026-06-21T04:47:53.9489194Z             },
2026-06-21T04:47:53.9489290Z             {
2026-06-21T04:47:53.9489457Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T04:47:53.9489570Z               "line": 869
2026-06-21T04:47:53.9489679Z             },
2026-06-21T04:47:53.9489775Z             {
2026-06-21T04:47:53.9489911Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T04:47:53.9490021Z               "line": 891
2026-06-21T04:47:53.9490117Z             },
2026-06-21T04:47:53.9490226Z             {
2026-06-21T04:47:53.9490355Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:53.9490459Z               "line": 122
2026-06-21T04:47:53.9490564Z             },
2026-06-21T04:47:53.9490665Z             {
2026-06-21T04:47:53.9490808Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T04:47:53.9490912Z               "line": 44
2026-06-21T04:47:53.9491013Z             },
2026-06-21T04:47:53.9491113Z             {
2026-06-21T04:47:53.9491256Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T04:47:53.9491362Z               "line": 184
2026-06-21T04:47:53.9491461Z             },
2026-06-21T04:47:53.9491570Z             {
2026-06-21T04:47:53.9491695Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T04:47:53.9491804Z               "line": 211
2026-06-21T04:47:53.9491909Z             },
2026-06-21T04:47:53.9492010Z             {
2026-06-21T04:47:53.9492138Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T04:47:53.9492244Z               "line": 251
2026-06-21T04:47:53.9492344Z             },
2026-06-21T04:47:53.9492447Z             {
2026-06-21T04:47:53.9492575Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T04:47:53.9492676Z               "line": 275
2026-06-21T04:47:53.9492775Z             },
2026-06-21T04:47:53.9492885Z             {
2026-06-21T04:47:53.9493118Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T04:47:53.9493225Z               "line": 289
2026-06-21T04:47:53.9493315Z             },
2026-06-21T04:47:53.9493424Z             {
2026-06-21T04:47:53.9493549Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T04:47:53.9493658Z               "line": 300
2026-06-21T04:47:53.9493762Z             },
2026-06-21T04:47:53.9493859Z             {
2026-06-21T04:47:53.9493991Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T04:47:53.9494091Z               "line": 313
2026-06-21T04:47:53.9494183Z             }
2026-06-21T04:47:53.9494274Z           ]
2026-06-21T04:47:53.9494378Z         },
2026-06-21T04:47:53.9494570Z         "int": {
2026-06-21T04:47:53.9494682Z           "complete": true,
2026-06-21T04:47:53.9494791Z           "evidence": [
2026-06-21T04:47:53.9494887Z             {
2026-06-21T04:47:53.9495042Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-21T04:47:53.9495147Z               "line": 116
2026-06-21T04:47:53.9495258Z             },
2026-06-21T04:47:53.9495366Z             {
2026-06-21T04:47:53.9495515Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-21T04:47:53.9495624Z               "line": 181
2026-06-21T04:47:53.9495724Z             }
2026-06-21T04:47:53.9495830Z           ]
2026-06-21T04:47:53.9495930Z         },
2026-06-21T04:47:53.9496034Z         "unit": {
2026-06-21T04:47:53.9496149Z           "complete": true,
2026-06-21T04:47:53.9496254Z           "evidence": [
2026-06-21T04:47:53.9496363Z             {
2026-06-21T04:47:53.9496511Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T04:47:53.9496620Z               "line": 999
2026-06-21T04:47:53.9496711Z             },
2026-06-21T04:47:53.9496812Z             {
2026-06-21T04:47:53.9496963Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T04:47:53.9497070Z               "line": 1016
2026-06-21T04:47:53.9497197Z             },
2026-06-21T04:47:53.9497298Z             {
2026-06-21T04:47:53.9497442Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T04:47:53.9497554Z               "line": 1024
2026-06-21T04:47:53.9497658Z             },
2026-06-21T04:47:53.9497759Z             {
2026-06-21T04:47:53.9497895Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T04:47:53.9498005Z               "line": 1048
2026-06-21T04:47:53.9498105Z             },
2026-06-21T04:47:53.9498210Z             {
2026-06-21T04:47:53.9498363Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T04:47:53.9498472Z               "line": 1499
2026-06-21T04:47:53.9498577Z             },
2026-06-21T04:47:53.9498678Z             {
2026-06-21T04:47:53.9498820Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T04:47:53.9498929Z               "line": 347
2026-06-21T04:47:53.9499116Z             },
2026-06-21T04:47:53.9499211Z             {
2026-06-21T04:47:53.9499336Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T04:47:53.9499473Z               "line": 370
2026-06-21T04:47:53.9499583Z             },
2026-06-21T04:47:53.9499693Z             {
2026-06-21T04:47:53.9499826Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T04:47:53.9499932Z               "line": 407
2026-06-21T04:47:53.9500041Z             },
2026-06-21T04:47:53.9500140Z             {
2026-06-21T04:47:53.9500273Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T04:47:53.9500368Z               "line": 431
2026-06-21T04:47:53.9500471Z             },
2026-06-21T04:47:53.9500566Z             {
2026-06-21T04:47:53.9500715Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T04:47:53.9500818Z               "line": 483
2026-06-21T04:47:53.9500920Z             },
2026-06-21T04:47:53.9501029Z             {
2026-06-21T04:47:53.9501162Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T04:47:53.9501268Z               "line": 499
2026-06-21T04:47:53.9501373Z             },
2026-06-21T04:47:53.9501578Z             {
2026-06-21T04:47:53.9501716Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T04:47:53.9501821Z               "line": 514
2026-06-21T04:47:53.9501926Z             },
2026-06-21T04:47:53.9502026Z             {
2026-06-21T04:47:53.9502159Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T04:47:53.9502265Z               "line": 531
2026-06-21T04:47:53.9502369Z             }
2026-06-21T04:47:53.9502474Z           ]
2026-06-21T04:47:53.9502575Z         }
2026-06-21T04:47:53.9502678Z       }
2026-06-21T04:47:53.9502780Z     },
2026-06-21T04:47:53.9502875Z     {
2026-06-21T04:47:53.9502979Z       "id": "REQ-MESH-3",
2026-06-21T04:47:53.9504796Z       "title": "Mesh row fan-out: registry rows stay OWN-AUTHORED; the only change is the push target widens from directly-paired peers to ALL roster members (a wider DIRECT fan-out, never a third-party relay). Every row/message still arrives from its author over a handshake → KNOWN-HAZARDS 7.5 (origin = handshake node) and 4.10 (eviction lease: any future update comes from that node itself, alive) PRESERVED VERBATIM. Closes the staggered A→B→C repro: C (roster-seeded with A at pairing) initiates to A, seed-proof admits C unpaired, A learns C, both push directly.",
2026-06-21T04:47:53.9504928Z       "requiredStages": [
2026-06-21T04:47:53.9505033Z         "impl",
2026-06-21T04:47:53.9505139Z         "unit",
2026-06-21T04:47:53.9505242Z         "int"
2026-06-21T04:47:53.9505341Z       ],
2026-06-21T04:47:53.9505438Z       "stages": {
2026-06-21T04:47:53.9505541Z         "doc": {
2026-06-21T04:47:53.9505645Z           "complete": false,
2026-06-21T04:47:53.9505750Z           "evidence": []
2026-06-21T04:47:53.9505851Z         },
2026-06-21T04:47:53.9505960Z         "impl": {
2026-06-21T04:47:53.9506070Z           "complete": true,
2026-06-21T04:47:53.9506180Z           "evidence": [
2026-06-21T04:47:53.9506279Z             {
2026-06-21T04:47:53.9506428Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T04:47:53.9506536Z               "line": 641
2026-06-21T04:47:53.9506642Z             }
2026-06-21T04:47:53.9506738Z           ]
2026-06-21T04:47:53.9506828Z         },
2026-06-21T04:47:53.9506932Z         "int": {
2026-06-21T04:47:53.9507038Z           "complete": true,
2026-06-21T04:47:53.9507148Z           "evidence": [
2026-06-21T04:47:53.9507247Z             {
2026-06-21T04:47:53.9507386Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-21T04:47:53.9507495Z               "line": 373
2026-06-21T04:47:53.9507596Z             },
2026-06-21T04:47:53.9507692Z             {
2026-06-21T04:47:53.9507819Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-21T04:47:53.9507940Z               "line": 436
2026-06-21T04:47:53.9508035Z             }
2026-06-21T04:47:53.9508138Z           ]
2026-06-21T04:47:53.9508248Z         },
2026-06-21T04:47:53.9508347Z         "unit": {
2026-06-21T04:47:53.9508460Z           "complete": true,
2026-06-21T04:47:53.9508565Z           "evidence": [
2026-06-21T04:47:53.9508670Z             {
2026-06-21T04:47:53.9508812Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T04:47:53.9508913Z               "line": 910
2026-06-21T04:47:53.9509108Z             }
2026-06-21T04:47:53.9509199Z           ]
2026-06-21T04:47:53.9509304Z         }
2026-06-21T04:47:53.9509413Z       }
2026-06-21T04:47:53.9509519Z     },
2026-06-21T04:47:53.9509624Z     {
2026-06-21T04:47:53.9509737Z       "id": "REQ-MESH-4",
2026-06-21T04:47:53.9511966Z       "title": "Revoke + timeboxed seed rotation + re-seed grace: `spt subnet revoke <node>...` (list, elevation-gated, revoke-only) writes roster tombstones immediately, then schedules ONE seed rotation (re-mint seed, bump seed_epoch, push new seed CONFIDENTIALLY over member-auth'd TLS connections — never in roster/registry gossip — force-drop revokees) at the close of a coalescing window (default 1h); further revokes in the window join the same rotation (one epoch bump). `--force-rotate-seed` rotates immediately (compromised-node path). RE-SEED GRACE: a node proving the immediately-prior epoch (N-1) AND still on the roster gets a re-seed-only restricted connection (auto-heals a benign offliner); revoked/off-roster denied; ≥2 stale → re-pair.",
2026-06-21T04:47:53.9512185Z       "requiredStages": [
2026-06-21T04:47:53.9512286Z         "impl",
2026-06-21T04:47:53.9512395Z         "unit",
2026-06-21T04:47:53.9512496Z         "int"
2026-06-21T04:47:53.9512605Z       ],
2026-06-21T04:47:53.9512705Z       "stages": {
2026-06-21T04:47:53.9512815Z         "doc": {
2026-06-21T04:47:53.9512919Z           "complete": false,
2026-06-21T04:47:53.9513030Z           "evidence": []
2026-06-21T04:47:53.9513229Z         },
2026-06-21T04:47:53.9513330Z         "impl": {
2026-06-21T04:47:53.9513450Z           "complete": true,
2026-06-21T04:47:53.9513543Z           "evidence": [
2026-06-21T04:47:53.9513638Z             {
2026-06-21T04:47:53.9513792Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T04:47:53.9513901Z               "line": 33
2026-06-21T04:47:53.9514015Z             },
2026-06-21T04:47:53.9514116Z             {
2026-06-21T04:47:53.9514262Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T04:47:53.9514373Z               "line": 68
2026-06-21T04:47:53.9514478Z             },
2026-06-21T04:47:53.9514577Z             {
2026-06-21T04:47:53.9514712Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T04:47:53.9514816Z               "line": 111
2026-06-21T04:47:53.9514916Z             },
2026-06-21T04:47:53.9515017Z             {
2026-06-21T04:47:53.9515160Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T04:47:53.9515265Z               "line": 462
2026-06-21T04:47:53.9515366Z             },
2026-06-21T04:47:53.9515464Z             {
2026-06-21T04:47:53.9515599Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T04:47:53.9515704Z               "line": 711
2026-06-21T04:47:53.9515807Z             },
2026-06-21T04:47:53.9515902Z             {
2026-06-21T04:47:53.9516045Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T04:47:53.9516143Z               "line": 725
2026-06-21T04:47:53.9516238Z             },
2026-06-21T04:47:53.9516344Z             {
2026-06-21T04:47:53.9516476Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:53.9516582Z               "line": 132
2026-06-21T04:47:53.9516706Z             },
2026-06-21T04:47:53.9516805Z             {
2026-06-21T04:47:53.9516955Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T04:47:53.9517059Z               "line": 26
2026-06-21T04:47:53.9517163Z             },
2026-06-21T04:47:53.9517269Z             {
2026-06-21T04:47:53.9517407Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T04:47:53.9517511Z               "line": 97
2026-06-21T04:47:53.9517618Z             },
2026-06-21T04:47:53.9517722Z             {
2026-06-21T04:47:53.9517851Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T04:47:53.9517956Z               "line": 119
2026-06-21T04:47:53.9518051Z             },
2026-06-21T04:47:53.9518151Z             {
2026-06-21T04:47:53.9518280Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T04:47:53.9518394Z               "line": 82
2026-06-21T04:47:53.9518505Z             },
2026-06-21T04:47:53.9518595Z             {
2026-06-21T04:47:53.9518727Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T04:47:53.9518832Z               "line": 111
2026-06-21T04:47:53.9519072Z             },
2026-06-21T04:47:53.9519177Z             {
2026-06-21T04:47:53.9519325Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T04:47:53.9519459Z               "line": 232
2026-06-21T04:47:53.9519564Z             },
2026-06-21T04:47:53.9519668Z             {
2026-06-21T04:47:53.9519812Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T04:47:53.9519932Z               "line": 245
2026-06-21T04:47:53.9520045Z             },
2026-06-21T04:47:53.9520274Z             {
2026-06-21T04:47:53.9520413Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9520522Z               "line": 4665
2026-06-21T04:47:53.9520626Z             }
2026-06-21T04:47:53.9520723Z           ]
2026-06-21T04:47:53.9520819Z         },
2026-06-21T04:47:53.9520922Z         "int": {
2026-06-21T04:47:53.9521033Z           "complete": true,
2026-06-21T04:47:53.9521138Z           "evidence": [
2026-06-21T04:47:53.9521241Z             {
2026-06-21T04:47:53.9521384Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-21T04:47:53.9521493Z               "line": 98
2026-06-21T04:47:53.9521596Z             },
2026-06-21T04:47:53.9521783Z             {
2026-06-21T04:47:53.9521930Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-21T04:47:53.9522030Z               "line": 140
2026-06-21T04:47:53.9522135Z             }
2026-06-21T04:47:53.9522235Z           ]
2026-06-21T04:47:53.9522340Z         },
2026-06-21T04:47:53.9522445Z         "unit": {
2026-06-21T04:47:53.9522545Z           "complete": true,
2026-06-21T04:47:53.9522655Z           "evidence": [
2026-06-21T04:47:53.9522765Z             {
2026-06-21T04:47:53.9526534Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T04:47:53.9526722Z               "line": 178
2026-06-21T04:47:53.9526832Z             },
2026-06-21T04:47:53.9526943Z             {
2026-06-21T04:47:53.9527109Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T04:47:53.9527229Z               "line": 242
2026-06-21T04:47:53.9527328Z             },
2026-06-21T04:47:53.9527428Z             {
2026-06-21T04:47:53.9527590Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T04:47:53.9527704Z               "line": 1079
2026-06-21T04:47:53.9527815Z             },
2026-06-21T04:47:53.9527915Z             {
2026-06-21T04:47:53.9528048Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T04:47:53.9528163Z               "line": 1109
2026-06-21T04:47:53.9528263Z             },
2026-06-21T04:47:53.9528372Z             {
2026-06-21T04:47:53.9528511Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T04:47:53.9528616Z               "line": 1129
2026-06-21T04:47:53.9528726Z             },
2026-06-21T04:47:53.9528817Z             {
2026-06-21T04:47:53.9529055Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T04:47:53.9529169Z               "line": 602
2026-06-21T04:47:53.9529282Z             },
2026-06-21T04:47:53.9529382Z             {
2026-06-21T04:47:53.9529533Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T04:47:53.9529637Z               "line": 148
2026-06-21T04:47:53.9529742Z             },
2026-06-21T04:47:53.9529834Z             {
2026-06-21T04:47:53.9529971Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T04:47:53.9530077Z               "line": 169
2026-06-21T04:47:53.9530182Z             },
2026-06-21T04:47:53.9530276Z             {
2026-06-21T04:47:53.9530425Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T04:47:53.9530525Z               "line": 181
2026-06-21T04:47:53.9530629Z             },
2026-06-21T04:47:53.9530735Z             {
2026-06-21T04:47:53.9530877Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T04:47:53.9530973Z               "line": 202
2026-06-21T04:47:53.9531073Z             },
2026-06-21T04:47:53.9531178Z             {
2026-06-21T04:47:53.9531317Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T04:47:53.9531430Z               "line": 375
2026-06-21T04:47:53.9531525Z             },
2026-06-21T04:47:53.9531627Z             {
2026-06-21T04:47:53.9531764Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T04:47:53.9531872Z               "line": 407
2026-06-21T04:47:53.9531982Z             },
2026-06-21T04:47:53.9532081Z             {
2026-06-21T04:47:53.9532204Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9532309Z               "line": 10052
2026-06-21T04:47:53.9532566Z             }
2026-06-21T04:47:53.9532662Z           ]
2026-06-21T04:47:53.9532771Z         }
2026-06-21T04:47:53.9532876Z       }
2026-06-21T04:47:53.9532972Z     },
2026-06-21T04:47:53.9533077Z     {
2026-06-21T04:47:53.9533186Z       "id": "REQ-MESH-5",
2026-06-21T04:47:53.9534659Z       "title": "Hard cutover from pairwise trust: delete peers.json + the is_trusted authorization path (no migration — expendable test fleet, re-pairs fresh under the new model, user decision 2026-06-08). Warn-on-change DEMOTED from a gate to an awareness notice anchored on machine_id (not label): 'machine M, last seen as K1, now presents K2' — fires the same event as the REQ-SUBNET-7 re-pair overwrite. The TrustStore/peers.json code and its call sites are removed, not left dead.",
2026-06-21T04:47:53.9534883Z       "requiredStages": [
2026-06-21T04:47:53.9534988Z         "impl",
2026-06-21T04:47:53.9535097Z         "unit"
2026-06-21T04:47:53.9535189Z       ],
2026-06-21T04:47:53.9535293Z       "stages": {
2026-06-21T04:47:53.9535406Z         "doc": {
2026-06-21T04:47:53.9535508Z           "complete": false,
2026-06-21T04:47:53.9535622Z           "evidence": []
2026-06-21T04:47:53.9535721Z         },
2026-06-21T04:47:53.9535823Z         "impl": {
2026-06-21T04:47:53.9535937Z           "complete": true,
2026-06-21T04:47:53.9536046Z           "evidence": [
2026-06-21T04:47:53.9536152Z             {
2026-06-21T04:47:53.9536299Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T04:47:53.9536419Z               "line": 61
2026-06-21T04:47:53.9536519Z             },
2026-06-21T04:47:53.9536618Z             {
2026-06-21T04:47:53.9536758Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T04:47:53.9536875Z               "line": 109
2026-06-21T04:47:53.9536980Z             },
2026-06-21T04:47:53.9537075Z             {
2026-06-21T04:47:53.9537226Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T04:47:53.9537330Z               "line": 104
2026-06-21T04:47:53.9537431Z             },
2026-06-21T04:47:53.9537535Z             {
2026-06-21T04:47:53.9537688Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T04:47:53.9537799Z               "line": 105
2026-06-21T04:47:53.9537898Z             },
2026-06-21T04:47:53.9538003Z             {
2026-06-21T04:47:53.9538146Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.9538260Z               "line": 85
2026-06-21T04:47:53.9538357Z             },
2026-06-21T04:47:53.9538461Z             {
2026-06-21T04:47:53.9538613Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.9538723Z               "line": 250
2026-06-21T04:47:53.9538833Z             },
2026-06-21T04:47:53.9538927Z             {
2026-06-21T04:47:53.9539156Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.9539257Z               "line": 314
2026-06-21T04:47:53.9539367Z             },
2026-06-21T04:47:53.9539490Z             {
2026-06-21T04:47:53.9539620Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.9539720Z               "line": 767
2026-06-21T04:47:53.9539818Z             },
2026-06-21T04:47:53.9539918Z             {
2026-06-21T04:47:53.9540046Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T04:47:53.9540154Z               "line": 101
2026-06-21T04:47:53.9540260Z             },
2026-06-21T04:47:53.9540356Z             {
2026-06-21T04:47:53.9540492Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T04:47:53.9540599Z               "line": 193
2026-06-21T04:47:53.9540703Z             }
2026-06-21T04:47:53.9540802Z           ]
2026-06-21T04:47:53.9540909Z         },
2026-06-21T04:47:53.9541018Z         "int": {
2026-06-21T04:47:53.9541131Z           "complete": false,
2026-06-21T04:47:53.9541243Z           "evidence": []
2026-06-21T04:47:53.9541342Z         },
2026-06-21T04:47:53.9541442Z         "unit": {
2026-06-21T04:47:53.9541553Z           "complete": true,
2026-06-21T04:47:53.9541662Z           "evidence": [
2026-06-21T04:47:53.9541872Z             {
2026-06-21T04:47:53.9542018Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.9542124Z               "line": 1009
2026-06-21T04:47:53.9542225Z             },
2026-06-21T04:47:53.9542324Z             {
2026-06-21T04:47:53.9542461Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T04:47:53.9542566Z               "line": 462
2026-06-21T04:47:53.9542664Z             }
2026-06-21T04:47:53.9542764Z           ]
2026-06-21T04:47:53.9542869Z         }
2026-06-21T04:47:53.9542966Z       }
2026-06-21T04:47:53.9543059Z     },
2026-06-21T04:47:53.9543160Z     {
2026-06-21T04:47:53.9543360Z       "id": "REQ-MESH-6",
2026-06-21T04:47:53.9544624Z       "title": "Concurrent liveness probes: `spt subnet status --nodes` fans out its offline/serve-probes (REQ-SUBNET-5) CONCURRENTLY — total wall-time bounded by the single-probe ceiling (~3s), never k×ceiling. The mesh makes a node see ALL members (many possibly offline), so a serial probe loop would be offline_count×3s. (Planning verifies the current REQ-SUBNET-5 probe loop's behavior and fixes it if serial.)",
2026-06-21T04:47:53.9544730Z       "requiredStages": [
2026-06-21T04:47:53.9544839Z         "impl",
2026-06-21T04:47:53.9544943Z         "unit"
2026-06-21T04:47:53.9545035Z       ],
2026-06-21T04:47:53.9545145Z       "stages": {
2026-06-21T04:47:53.9545238Z         "doc": {
2026-06-21T04:47:53.9545352Z           "complete": false,
2026-06-21T04:47:53.9545458Z           "evidence": []
2026-06-21T04:47:53.9545567Z         },
2026-06-21T04:47:53.9545667Z         "impl": {
2026-06-21T04:47:53.9545768Z           "complete": true,
2026-06-21T04:47:53.9545881Z           "evidence": [
2026-06-21T04:47:53.9545981Z             {
2026-06-21T04:47:53.9546115Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9546220Z               "line": 4181
2026-06-21T04:47:53.9546325Z             }
2026-06-21T04:47:53.9546425Z           ]
2026-06-21T04:47:53.9546525Z         },
2026-06-21T04:47:53.9546615Z         "int": {
2026-06-21T04:47:53.9546722Z           "complete": false,
2026-06-21T04:47:53.9546831Z           "evidence": []
2026-06-21T04:47:53.9546930Z         },
2026-06-21T04:47:53.9547042Z         "unit": {
2026-06-21T04:47:53.9547150Z           "complete": true,
2026-06-21T04:47:53.9547264Z           "evidence": [
2026-06-21T04:47:53.9547370Z             {
2026-06-21T04:47:53.9547493Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9547597Z               "line": 10602
2026-06-21T04:47:53.9547697Z             },
2026-06-21T04:47:53.9547800Z             {
2026-06-21T04:47:53.9547909Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9548025Z               "line": 10629
2026-06-21T04:47:53.9548124Z             },
2026-06-21T04:47:53.9548219Z             {
2026-06-21T04:47:53.9548349Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9548448Z               "line": 10653
2026-06-21T04:47:53.9548553Z             }
2026-06-21T04:47:53.9548659Z           ]
2026-06-21T04:47:53.9548763Z         }
2026-06-21T04:47:53.9548868Z       }
2026-06-21T04:47:53.9549031Z     },
2026-06-21T04:47:53.9549135Z     {
2026-06-21T04:47:53.9549251Z       "id": "REQ-MIGRATE-1",
2026-06-21T04:47:53.9549445Z       "title": "Auto-detect and migrate a legacy claude_skill_owl install",
2026-06-21T04:47:53.9549566Z       "requiredStages": [],
2026-06-21T04:47:53.9549664Z       "stages": {
2026-06-21T04:47:53.9549769Z         "doc": {
2026-06-21T04:47:53.9549885Z           "complete": false,
2026-06-21T04:47:53.9549988Z           "evidence": []
2026-06-21T04:47:53.9550089Z         },
2026-06-21T04:47:53.9550185Z         "impl": {
2026-06-21T04:47:53.9550289Z           "complete": false,
2026-06-21T04:47:53.9550397Z           "evidence": []
2026-06-21T04:47:53.9550502Z         },
2026-06-21T04:47:53.9550602Z         "int": {
2026-06-21T04:47:53.9550715Z           "complete": false,
2026-06-21T04:47:53.9550815Z           "evidence": []
2026-06-21T04:47:53.9551020Z         },
2026-06-21T04:47:53.9551120Z         "unit": {
2026-06-21T04:47:53.9551226Z           "complete": false,
2026-06-21T04:47:53.9551330Z           "evidence": []
2026-06-21T04:47:53.9551430Z         }
2026-06-21T04:47:53.9551526Z       }
2026-06-21T04:47:53.9551626Z     },
2026-06-21T04:47:53.9551725Z     {
2026-06-21T04:47:53.9551831Z       "id": "REQ-MSG-1",
2026-06-21T04:47:53.9552278Z       "title": "Local message delivery: TCP-first to a registered address, spool fallback when offline; id->address via registry (stale-clean first); reply routing (__REPLY_TO__)",
2026-06-21T04:47:53.9552403Z       "requiredStages": [
2026-06-21T04:47:53.9552499Z         "impl",
2026-06-21T04:47:53.9552704Z         "unit",
2026-06-21T04:47:53.9552809Z         "int"
2026-06-21T04:47:53.9552917Z       ],
2026-06-21T04:47:53.9553026Z       "stages": {
2026-06-21T04:47:53.9553126Z         "doc": {
2026-06-21T04:47:53.9553239Z           "complete": false,
2026-06-21T04:47:53.9553343Z           "evidence": []
2026-06-21T04:47:53.9553449Z         },
2026-06-21T04:47:53.9553558Z         "impl": {
2026-06-21T04:47:53.9553658Z           "complete": true,
2026-06-21T04:47:53.9553764Z           "evidence": [
2026-06-21T04:47:53.9553855Z             {
2026-06-21T04:47:53.9553996Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T04:47:53.9554102Z               "line": 28
2026-06-21T04:47:53.9554207Z             },
2026-06-21T04:47:53.9554306Z             {
2026-06-21T04:47:53.9554436Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T04:47:53.9554540Z               "line": 94
2026-06-21T04:47:53.9554645Z             },
2026-06-21T04:47:53.9554741Z             {
2026-06-21T04:47:53.9554874Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T04:47:53.9554985Z               "line": 127
2026-06-21T04:47:53.9555089Z             },
2026-06-21T04:47:53.9555193Z             {
2026-06-21T04:47:53.9555328Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T04:47:53.9555441Z               "line": 149
2026-06-21T04:47:53.9555546Z             },
2026-06-21T04:47:53.9555648Z             {
2026-06-21T04:47:53.9555779Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T04:47:53.9555884Z               "line": 174
2026-06-21T04:47:53.9555989Z             },
2026-06-21T04:47:53.9556099Z             {
2026-06-21T04:47:53.9556231Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T04:47:53.9556347Z               "line": 18
2026-06-21T04:47:53.9556451Z             },
2026-06-21T04:47:53.9556556Z             {
2026-06-21T04:47:53.9556685Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T04:47:53.9556794Z               "line": 13
2026-06-21T04:47:53.9556900Z             },
2026-06-21T04:47:53.9557005Z             {
2026-06-21T04:47:53.9557137Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T04:47:53.9557239Z               "line": 62
2026-06-21T04:47:53.9557347Z             },
2026-06-21T04:47:53.9557443Z             {
2026-06-21T04:47:53.9557578Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T04:47:53.9557690Z               "line": 13
2026-06-21T04:47:53.9557791Z             }
2026-06-21T04:47:53.9557893Z           ]
2026-06-21T04:47:53.9557996Z         },
2026-06-21T04:47:53.9558100Z         "int": {
2026-06-21T04:47:53.9558210Z           "complete": true,
2026-06-21T04:47:53.9558322Z           "evidence": [
2026-06-21T04:47:53.9558431Z             {
2026-06-21T04:47:53.9558585Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T04:47:53.9558694Z               "line": 9
2026-06-21T04:47:53.9558799Z             },
2026-06-21T04:47:53.9558899Z             {
2026-06-21T04:47:53.9559128Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T04:47:53.9559233Z               "line": 56
2026-06-21T04:47:53.9559342Z             },
2026-06-21T04:47:53.9559452Z             {
2026-06-21T04:47:53.9559605Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T04:47:53.9559815Z               "line": 113
2026-06-21T04:47:53.9559919Z             }
2026-06-21T04:47:53.9560019Z           ]
2026-06-21T04:47:53.9560126Z         },
2026-06-21T04:47:53.9560229Z         "unit": {
2026-06-21T04:47:53.9560339Z           "complete": true,
2026-06-21T04:47:53.9560450Z           "evidence": [
2026-06-21T04:47:53.9560548Z             {
2026-06-21T04:47:53.9560687Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T04:47:53.9560789Z               "line": 203
2026-06-21T04:47:53.9560896Z             },
2026-06-21T04:47:53.9561000Z             {
2026-06-21T04:47:53.9561129Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T04:47:53.9561351Z               "line": 232
2026-06-21T04:47:53.9561447Z             },
2026-06-21T04:47:53.9561551Z             {
2026-06-21T04:47:53.9561670Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T04:47:53.9561781Z               "line": 277
2026-06-21T04:47:53.9561885Z             },
2026-06-21T04:47:53.9561995Z             {
2026-06-21T04:47:53.9562129Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T04:47:53.9562233Z               "line": 300
2026-06-21T04:47:53.9562333Z             },
2026-06-21T04:47:53.9562439Z             {
2026-06-21T04:47:53.9562572Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T04:47:53.9562678Z               "line": 325
2026-06-21T04:47:53.9562777Z             },
2026-06-21T04:47:53.9562877Z             {
2026-06-21T04:47:53.9562998Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T04:47:53.9563106Z               "line": 204
2026-06-21T04:47:53.9563211Z             },
2026-06-21T04:47:53.9563317Z             {
2026-06-21T04:47:53.9563454Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T04:47:53.9563562Z               "line": 237
2026-06-21T04:47:53.9563667Z             },
2026-06-21T04:47:53.9563771Z             {
2026-06-21T04:47:53.9563898Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T04:47:53.9564009Z               "line": 251
2026-06-21T04:47:53.9564109Z             },
2026-06-21T04:47:53.9564208Z             {
2026-06-21T04:47:53.9564343Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T04:47:53.9564452Z               "line": 263
2026-06-21T04:47:53.9564552Z             },
2026-06-21T04:47:53.9564657Z             {
2026-06-21T04:47:53.9564786Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T04:47:53.9564891Z               "line": 162
2026-06-21T04:47:53.9564996Z             },
2026-06-21T04:47:53.9565096Z             {
2026-06-21T04:47:53.9565225Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T04:47:53.9565330Z               "line": 242
2026-06-21T04:47:53.9565439Z             },
2026-06-21T04:47:53.9565540Z             {
2026-06-21T04:47:53.9565663Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T04:47:53.9565768Z               "line": 134
2026-06-21T04:47:53.9565870Z             },
2026-06-21T04:47:53.9565973Z             {
2026-06-21T04:47:53.9566101Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T04:47:53.9566217Z               "line": 153
2026-06-21T04:47:53.9566321Z             }
2026-06-21T04:47:53.9566415Z           ]
2026-06-21T04:47:53.9566521Z         }
2026-06-21T04:47:53.9566627Z       }
2026-06-21T04:47:53.9566734Z     },
2026-06-21T04:47:53.9566835Z     {
2026-06-21T04:47:53.9566940Z       "id": "REQ-MSG-2",
2026-06-21T04:47:53.9567236Z       "title": "spt binary CLI surface: send/ring/ready(+--once)/list/stop/whoami, stable arg shapes + exit codes",
2026-06-21T04:47:53.9567350Z       "requiredStages": [
2026-06-21T04:47:53.9567450Z         "impl",
2026-06-21T04:47:53.9567556Z         "unit"
2026-06-21T04:47:53.9567655Z       ],
2026-06-21T04:47:53.9567755Z       "stages": {
2026-06-21T04:47:53.9567861Z         "doc": {
2026-06-21T04:47:53.9567975Z           "complete": false,
2026-06-21T04:47:53.9568075Z           "evidence": []
2026-06-21T04:47:53.9568190Z         },
2026-06-21T04:47:53.9568371Z         "impl": {
2026-06-21T04:47:53.9568491Z           "complete": true,
2026-06-21T04:47:53.9568589Z           "evidence": [
2026-06-21T04:47:53.9568698Z             {
2026-06-21T04:47:53.9568827Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9568925Z               "line": 11
2026-06-21T04:47:53.9569116Z             },
2026-06-21T04:47:53.9569216Z             {
2026-06-21T04:47:53.9569344Z               "path": "crates/spt/src/main.rs",
2026-06-21T04:47:53.9569450Z               "line": 8
2026-06-21T04:47:53.9569554Z             }
2026-06-21T04:47:53.9569659Z           ]
2026-06-21T04:47:53.9569760Z         },
2026-06-21T04:47:53.9569869Z         "int": {
2026-06-21T04:47:53.9570080Z           "complete": false,
2026-06-21T04:47:53.9570184Z           "evidence": []
2026-06-21T04:47:53.9570274Z         },
2026-06-21T04:47:53.9570380Z         "unit": {
2026-06-21T04:47:53.9570494Z           "complete": true,
2026-06-21T04:47:53.9570603Z           "evidence": [
2026-06-21T04:47:53.9570705Z             {
2026-06-21T04:47:53.9570832Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9570942Z               "line": 7717
2026-06-21T04:47:53.9571034Z             },
2026-06-21T04:47:53.9571142Z             {
2026-06-21T04:47:53.9571267Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9571377Z               "line": 7759
2026-06-21T04:47:53.9571485Z             },
2026-06-21T04:47:53.9571584Z             {
2026-06-21T04:47:53.9571713Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9571811Z               "line": 7808
2026-06-21T04:47:53.9571916Z             },
2026-06-21T04:47:53.9572022Z             {
2026-06-21T04:47:53.9572149Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9572255Z               "line": 7831
2026-06-21T04:47:53.9572351Z             },
2026-06-21T04:47:53.9572454Z             {
2026-06-21T04:47:53.9572579Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9572679Z               "line": 9807
2026-06-21T04:47:53.9572793Z             },
2026-06-21T04:47:53.9572899Z             {
2026-06-21T04:47:53.9573022Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9573127Z               "line": 9816
2026-06-21T04:47:53.9573243Z             },
2026-06-21T04:47:53.9573346Z             {
2026-06-21T04:47:53.9573461Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9573577Z               "line": 9830
2026-06-21T04:47:53.9573675Z             }
2026-06-21T04:47:53.9573781Z           ]
2026-06-21T04:47:53.9573877Z         }
2026-06-21T04:47:53.9573990Z       }
2026-06-21T04:47:53.9574089Z     },
2026-06-21T04:47:53.9574194Z     {
2026-06-21T04:47:53.9574303Z       "id": "REQ-MSG-3",
2026-06-21T04:47:53.9574707Z       "title": "Ready-agent lifecycle: register perch (info.json + listener + registry address) on ready, drain spooled backlog on startup, clean teardown",
2026-06-21T04:47:53.9574831Z       "requiredStages": [
2026-06-21T04:47:53.9574927Z         "impl",
2026-06-21T04:47:53.9575041Z         "unit",
2026-06-21T04:47:53.9575151Z         "int"
2026-06-21T04:47:53.9575241Z       ],
2026-06-21T04:47:53.9575355Z       "stages": {
2026-06-21T04:47:53.9575451Z         "doc": {
2026-06-21T04:47:53.9575561Z           "complete": false,
2026-06-21T04:47:53.9575665Z           "evidence": []
2026-06-21T04:47:53.9575775Z         },
2026-06-21T04:47:53.9575895Z         "impl": {
2026-06-21T04:47:53.9575994Z           "complete": true,
2026-06-21T04:47:53.9576110Z           "evidence": [
2026-06-21T04:47:53.9576218Z             {
2026-06-21T04:47:53.9576366Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T04:47:53.9576472Z               "line": 19
2026-06-21T04:47:53.9576576Z             },
2026-06-21T04:47:53.9576681Z             {
2026-06-21T04:47:53.9576806Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T04:47:53.9576914Z               "line": 21
2026-06-21T04:47:53.9577018Z             },
2026-06-21T04:47:53.9577124Z             {
2026-06-21T04:47:53.9577357Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T04:47:53.9577468Z               "line": 48
2026-06-21T04:47:53.9577576Z             },
2026-06-21T04:47:53.9577672Z             {
2026-06-21T04:47:53.9577801Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T04:47:53.9577896Z               "line": 174
2026-06-21T04:47:53.9578005Z             }
2026-06-21T04:47:53.9578106Z           ]
2026-06-21T04:47:53.9578202Z         },
2026-06-21T04:47:53.9578306Z         "int": {
2026-06-21T04:47:53.9578416Z           "complete": true,
2026-06-21T04:47:53.9578531Z           "evidence": [
2026-06-21T04:47:53.9578630Z             {
2026-06-21T04:47:53.9578854Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T04:47:53.9579027Z               "line": 10
2026-06-21T04:47:53.9579131Z             },
2026-06-21T04:47:53.9579230Z             {
2026-06-21T04:47:53.9579383Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T04:47:53.9579523Z               "line": 56
2026-06-21T04:47:53.9579624Z             }
2026-06-21T04:47:53.9579714Z           ]
2026-06-21T04:47:53.9579819Z         },
2026-06-21T04:47:53.9579928Z         "unit": {
2026-06-21T04:47:53.9580034Z           "complete": true,
2026-06-21T04:47:53.9580143Z           "evidence": [
2026-06-21T04:47:53.9580248Z             {
2026-06-21T04:47:53.9580377Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T04:47:53.9580491Z               "line": 228
2026-06-21T04:47:53.9580592Z             },
2026-06-21T04:47:53.9580696Z             {
2026-06-21T04:47:53.9580829Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T04:47:53.9580940Z               "line": 247
2026-06-21T04:47:53.9581039Z             },
2026-06-21T04:47:53.9581139Z             {
2026-06-21T04:47:53.9581279Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T04:47:53.9581377Z               "line": 270
2026-06-21T04:47:53.9581478Z             }
2026-06-21T04:47:53.9581589Z           ]
2026-06-21T04:47:53.9581687Z         }
2026-06-21T04:47:53.9581793Z       }
2026-06-21T04:47:53.9581894Z     },
2026-06-21T04:47:53.9581998Z     {
2026-06-21T04:47:53.9582102Z       "id": "REQ-MSG-4",
2026-06-21T04:47:53.9582963Z       "title": "Listener stream stdout emits EVENT envelope lines (sister-format, ADR-0001): parse the __REPLY_TO__ frame, pass pre-formed typed envelopes through verbatim (no double-wrap), compose <EVENT type=\"msg\" from=…> otherwise, chunk oversized lines into EVENT-PART",
2026-06-21T04:47:53.9583072Z       "requiredStages": [
2026-06-21T04:47:53.9583173Z         "impl",
2026-06-21T04:47:53.9583283Z         "unit",
2026-06-21T04:47:53.9583382Z         "int"
2026-06-21T04:47:53.9583488Z       ],
2026-06-21T04:47:53.9583592Z       "stages": {
2026-06-21T04:47:53.9583692Z         "doc": {
2026-06-21T04:47:53.9583798Z           "complete": false,
2026-06-21T04:47:53.9583906Z           "evidence": []
2026-06-21T04:47:53.9584031Z         },
2026-06-21T04:47:53.9584132Z         "impl": {
2026-06-21T04:47:53.9584254Z           "complete": true,
2026-06-21T04:47:53.9584355Z           "evidence": [
2026-06-21T04:47:53.9584457Z             {
2026-06-21T04:47:53.9584588Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T04:47:53.9584687Z               "line": 19
2026-06-21T04:47:53.9584798Z             },
2026-06-21T04:47:53.9584895Z             {
2026-06-21T04:47:53.9585028Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T04:47:53.9585134Z               "line": 46
2026-06-21T04:47:53.9585238Z             },
2026-06-21T04:47:53.9585343Z             {
2026-06-21T04:47:53.9585473Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:53.9585581Z               "line": 532
2026-06-21T04:47:53.9585682Z             },
2026-06-21T04:47:53.9585787Z             {
2026-06-21T04:47:53.9585920Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9586031Z               "line": 3110
2026-06-21T04:47:53.9586140Z             }
2026-06-21T04:47:53.9586331Z           ]
2026-06-21T04:47:53.9586431Z         },
2026-06-21T04:47:53.9586536Z         "int": {
2026-06-21T04:47:53.9586646Z           "complete": true,
2026-06-21T04:47:53.9586760Z           "evidence": [
2026-06-21T04:47:53.9586860Z             {
2026-06-21T04:47:53.9587009Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T04:47:53.9587117Z               "line": 98
2026-06-21T04:47:53.9587227Z             },
2026-06-21T04:47:53.9587314Z             {
2026-06-21T04:47:53.9587464Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T04:47:53.9587569Z               "line": 128
2026-06-21T04:47:53.9587665Z             }
2026-06-21T04:47:53.9587864Z           ]
2026-06-21T04:47:53.9587965Z         },
2026-06-21T04:47:53.9588075Z         "unit": {
2026-06-21T04:47:53.9588188Z           "complete": true,
2026-06-21T04:47:53.9588295Z           "evidence": [
2026-06-21T04:47:53.9588399Z             {
2026-06-21T04:47:53.9588527Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T04:47:53.9588643Z               "line": 68
2026-06-21T04:47:53.9588742Z             },
2026-06-21T04:47:53.9588851Z             {
2026-06-21T04:47:53.9589061Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T04:47:53.9589166Z               "line": 79
2026-06-21T04:47:53.9589267Z             },
2026-06-21T04:47:53.9589357Z             {
2026-06-21T04:47:53.9589491Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T04:47:53.9589592Z               "line": 90
2026-06-21T04:47:53.9589714Z             },
2026-06-21T04:47:53.9589818Z             {
2026-06-21T04:47:53.9589966Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T04:47:53.9590074Z               "line": 151
2026-06-21T04:47:53.9590174Z             }
2026-06-21T04:47:53.9590275Z           ]
2026-06-21T04:47:53.9590374Z         }
2026-06-21T04:47:53.9590479Z       }
2026-06-21T04:47:53.9590580Z     },
2026-06-21T04:47:53.9590680Z     {
2026-06-21T04:47:53.9590784Z       "id": "REQ-MSG-5",
2026-06-21T04:47:53.9591515Z       "title": "user-msg envelope kind + daemon identity gate: a Gateway endpoint / the local user's CLI author user-msg (the user's authority); agent-family senders re-stamped to plain msg; identity-gated never payload-trusted (KH 7.3/7.5); wire-additive (N-1 receivers tolerate the new type)",
2026-06-21T04:47:53.9591629Z       "requiredStages": [
2026-06-21T04:47:53.9591728Z         "doc",
2026-06-21T04:47:53.9591839Z         "impl",
2026-06-21T04:47:53.9591947Z         "unit"
2026-06-21T04:47:53.9592048Z       ],
2026-06-21T04:47:53.9592149Z       "stages": {
2026-06-21T04:47:53.9592252Z         "doc": {
2026-06-21T04:47:53.9592368Z           "complete": true,
2026-06-21T04:47:53.9592474Z           "evidence": [
2026-06-21T04:47:53.9592577Z             {
2026-06-21T04:47:53.9592695Z               "path": "CONTEXT.md",
2026-06-21T04:47:53.9592810Z               "line": 231
2026-06-21T04:47:53.9592917Z             }
2026-06-21T04:47:53.9593021Z           ]
2026-06-21T04:47:53.9593123Z         },
2026-06-21T04:47:53.9593232Z         "impl": {
2026-06-21T04:47:53.9593341Z           "complete": true,
2026-06-21T04:47:53.9593443Z           "evidence": [
2026-06-21T04:47:53.9593552Z             {
2026-06-21T04:47:53.9593680Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T04:47:53.9593786Z               "line": 60
2026-06-21T04:47:53.9593890Z             },
2026-06-21T04:47:53.9593980Z             {
2026-06-21T04:47:53.9594114Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T04:47:53.9594223Z               "line": 126
2026-06-21T04:47:53.9594324Z             },
2026-06-21T04:47:53.9594429Z             {
2026-06-21T04:47:53.9594562Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T04:47:53.9594668Z               "line": 135
2026-06-21T04:47:53.9594768Z             },
2026-06-21T04:47:53.9594872Z             {
2026-06-21T04:47:53.9595007Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T04:47:53.9595115Z               "line": 149
2026-06-21T04:47:53.9595324Z             },
2026-06-21T04:47:53.9595428Z             {
2026-06-21T04:47:53.9595555Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T04:47:53.9595665Z               "line": 178
2026-06-21T04:47:53.9595770Z             },
2026-06-21T04:47:53.9595879Z             {
2026-06-21T04:47:53.9595995Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9596109Z               "line": 2802
2026-06-21T04:47:53.9596208Z             }
2026-06-21T04:47:53.9596315Z           ]
2026-06-21T04:47:53.9596410Z         },
2026-06-21T04:47:53.9596518Z         "int": {
2026-06-21T04:47:53.9596625Z           "complete": true,
2026-06-21T04:47:53.9596833Z           "evidence": [
2026-06-21T04:47:53.9596940Z             {
2026-06-21T04:47:53.9597067Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-21T04:47:53.9597176Z               "line": 19
2026-06-21T04:47:53.9597269Z             }
2026-06-21T04:47:53.9597372Z           ]
2026-06-21T04:47:53.9597477Z         },
2026-06-21T04:47:53.9597588Z         "unit": {
2026-06-21T04:47:53.9597696Z           "complete": true,
2026-06-21T04:47:53.9597801Z           "evidence": [
2026-06-21T04:47:53.9597908Z             {
2026-06-21T04:47:53.9598039Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T04:47:53.9598153Z               "line": 192
2026-06-21T04:47:53.9598259Z             },
2026-06-21T04:47:53.9598358Z             {
2026-06-21T04:47:53.9598496Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T04:47:53.9598607Z               "line": 154
2026-06-21T04:47:53.9598711Z             },
2026-06-21T04:47:53.9598811Z             {
2026-06-21T04:47:53.9599021Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T04:47:53.9599126Z               "line": 122
2026-06-21T04:47:53.9599226Z             },
2026-06-21T04:47:53.9599336Z             {
2026-06-21T04:47:53.9599465Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T04:47:53.9599574Z               "line": 452
2026-06-21T04:47:53.9599674Z             },
2026-06-21T04:47:53.9599790Z             {
2026-06-21T04:47:53.9599931Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T04:47:53.9600036Z               "line": 501
2026-06-21T04:47:53.9600138Z             },
2026-06-21T04:47:53.9600236Z             {
2026-06-21T04:47:53.9600369Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T04:47:53.9600474Z               "line": 517
2026-06-21T04:47:53.9600577Z             },
2026-06-21T04:47:53.9600681Z             {
2026-06-21T04:47:53.9600811Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T04:47:53.9600920Z               "line": 536
2026-06-21T04:47:53.9601025Z             },
2026-06-21T04:47:53.9601131Z             {
2026-06-21T04:47:53.9601249Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9601359Z               "line": 7660
2026-06-21T04:47:53.9601455Z             }
2026-06-21T04:47:53.9601554Z           ]
2026-06-21T04:47:53.9601659Z         }
2026-06-21T04:47:53.9601765Z       }
2026-06-21T04:47:53.9601869Z     },
2026-06-21T04:47:53.9601969Z     {
2026-06-21T04:47:53.9602070Z       "id": "REQ-MSG-6",
2026-06-21T04:47:53.9603678Z       "title": "cross-node Gateway user-msg honored via advertised endpoint_type: a user-msg from a Gateway-typed origin survives the receive_wan funnel as user-msg (vs the fail-closed re-stamp), keyed on the QUIC-handshake-proven origin node (never wire `from`). Trust boundary = subnet membership (operator-ratified 2026-06-13); no defense against an in-subnet member forging the type. Instance.endpoint_type is an additive serde-default field extending REQ-INST-7's data model. Absent/unknown type → re-stamp (N-1 rollout grace)",
2026-06-21T04:47:53.9603788Z       "requiredStages": [
2026-06-21T04:47:53.9603892Z         "doc",
2026-06-21T04:47:53.9604003Z         "impl",
2026-06-21T04:47:53.9604103Z         "unit"
2026-06-21T04:47:53.9604206Z       ],
2026-06-21T04:47:53.9604313Z       "stages": {
2026-06-21T04:47:53.9604413Z         "doc": {
2026-06-21T04:47:53.9604632Z           "complete": true,
2026-06-21T04:47:53.9604736Z           "evidence": [
2026-06-21T04:47:53.9604846Z             {
2026-06-21T04:47:53.9604961Z               "path": "CONTEXT.md",
2026-06-21T04:47:53.9605069Z               "line": 234
2026-06-21T04:47:53.9605170Z             }
2026-06-21T04:47:53.9605276Z           ]
2026-06-21T04:47:53.9605379Z         },
2026-06-21T04:47:53.9605490Z         "impl": {
2026-06-21T04:47:53.9605601Z           "complete": true,
2026-06-21T04:47:53.9605708Z           "evidence": [
2026-06-21T04:47:53.9605817Z             {
2026-06-21T04:47:53.9605970Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.9606183Z               "line": 177
2026-06-21T04:47:53.9606293Z             },
2026-06-21T04:47:53.9609953Z             {
2026-06-21T04:47:53.9610153Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.9610258Z               "line": 428
2026-06-21T04:47:53.9610369Z             },
2026-06-21T04:47:53.9610477Z             {
2026-06-21T04:47:53.9610635Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.9610745Z               "line": 451
2026-06-21T04:47:53.9610858Z             },
2026-06-21T04:47:53.9610972Z             {
2026-06-21T04:47:53.9611105Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T04:47:53.9611218Z               "line": 89
2026-06-21T04:47:53.9611313Z             },
2026-06-21T04:47:53.9611424Z             {
2026-06-21T04:47:53.9611570Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9611686Z               "line": 155
2026-06-21T04:47:53.9611795Z             }
2026-06-21T04:47:53.9611899Z           ]
2026-06-21T04:47:53.9612001Z         },
2026-06-21T04:47:53.9612105Z         "int": {
2026-06-21T04:47:53.9612209Z           "complete": false,
2026-06-21T04:47:53.9612315Z           "evidence": []
2026-06-21T04:47:53.9612410Z         },
2026-06-21T04:47:53.9612519Z         "unit": {
2026-06-21T04:47:53.9612625Z           "complete": true,
2026-06-21T04:47:53.9612734Z           "evidence": [
2026-06-21T04:47:53.9612834Z             {
2026-06-21T04:47:53.9612992Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.9613102Z               "line": 1746
2026-06-21T04:47:53.9613207Z             },
2026-06-21T04:47:53.9613312Z             {
2026-06-21T04:47:53.9613440Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T04:47:53.9613551Z               "line": 219
2026-06-21T04:47:53.9613655Z             }
2026-06-21T04:47:53.9613753Z           ]
2026-06-21T04:47:53.9613849Z         }
2026-06-21T04:47:53.9613958Z       }
2026-06-21T04:47:53.9614066Z     },
2026-06-21T04:47:53.9614166Z     {
2026-06-21T04:47:53.9614286Z       "id": "REQ-MSG-ENVELOPE",
2026-06-21T04:47:53.9618121Z       "title": "The <EVENT type=\"msg\" from=…>body</EVENT> envelope (spt-proto::event, the ADR-0001 grammar) is the SOLE canonical arriving-message format at EVERY harness arriving-message surface on an AGENT perch — api listen AND api poll/worker-poll, byte-identical (reverses REQ-MSG-4's 'hook drains keep the raw frame by contract'). SCOPE CARVE-OUT: the shell-command relay (api poll <shell-id> --link, cmd_poll_shell) is a distinct internal transport carrying RAW MAC'd stamped frames the shell child consumes verbatim — NOT an arriving-message surface, deliberately EXEMPT from <EVENT> composition (notify_shell_e2e guards this boundary). __REPLY_TO__ — mis-elevated during the clean-room port to a fake ADR-0001 'stable wire format' (spt-msg/wire.rs, lib.rs) — is REMOVED entirely (spool format_row, the spt-msg TCP frame, emit parse_frame); (from, body) carried structurally, <EVENT> composed once at the delivery boundary. No legacy sister-interop (spt-core never required it). Reply-correlation rebinds onto the structural from / <EVENT from=…> attribute (ADR-0009 access-gate + ADR-0012 Psyche/spt-live reply-target). Self-delimiting by construction → finding F-002 (non-self-delimiting multi-message poll) dissolves. ADR-0020.",
2026-06-21T04:47:53.9618403Z       "requiredStages": [
2026-06-21T04:47:53.9618506Z         "doc",
2026-06-21T04:47:53.9618612Z         "impl",
2026-06-21T04:47:53.9618718Z         "unit",
2026-06-21T04:47:53.9618825Z         "int"
2026-06-21T04:47:53.9618922Z       ],
2026-06-21T04:47:53.9619098Z       "stages": {
2026-06-21T04:47:53.9619192Z         "doc": {
2026-06-21T04:47:53.9619307Z           "complete": true,
2026-06-21T04:47:53.9619418Z           "evidence": [
2026-06-21T04:47:53.9619526Z             {
2026-06-21T04:47:53.9619789Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-21T04:47:53.9620009Z               "line": 47
2026-06-21T04:47:53.9620103Z             }
2026-06-21T04:47:53.9620212Z           ]
2026-06-21T04:47:53.9620314Z         },
2026-06-21T04:47:53.9620413Z         "impl": {
2026-06-21T04:47:53.9620518Z           "complete": true,
2026-06-21T04:47:53.9620634Z           "evidence": [
2026-06-21T04:47:53.9620742Z             {
2026-06-21T04:47:53.9620876Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T04:47:53.9620977Z               "line": 20
2026-06-21T04:47:53.9621085Z             },
2026-06-21T04:47:53.9621185Z             {
2026-06-21T04:47:53.9621315Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T04:47:53.9621418Z               "line": 33
2026-06-21T04:47:53.9621528Z             },
2026-06-21T04:47:53.9621627Z             {
2026-06-21T04:47:53.9621745Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T04:47:53.9621850Z               "line": 47
2026-06-21T04:47:53.9621946Z             },
2026-06-21T04:47:53.9622055Z             {
2026-06-21T04:47:53.9622174Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T04:47:53.9622280Z               "line": 58
2026-06-21T04:47:53.9622383Z             },
2026-06-21T04:47:53.9622489Z             {
2026-06-21T04:47:53.9622613Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T04:47:53.9622727Z               "line": 14
2026-06-21T04:47:53.9622828Z             },
2026-06-21T04:47:53.9622937Z             {
2026-06-21T04:47:53.9623061Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T04:47:53.9623167Z               "line": 27
2026-06-21T04:47:53.9623271Z             },
2026-06-21T04:47:53.9623366Z             {
2026-06-21T04:47:53.9623496Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T04:47:53.9623604Z               "line": 40
2026-06-21T04:47:53.9623705Z             },
2026-06-21T04:47:53.9623811Z             {
2026-06-21T04:47:53.9623957Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T04:47:53.9624053Z               "line": 92
2026-06-21T04:47:53.9624163Z             },
2026-06-21T04:47:53.9624272Z             {
2026-06-21T04:47:53.9624409Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T04:47:53.9624523Z               "line": 143
2026-06-21T04:47:53.9624631Z             },
2026-06-21T04:47:53.9624721Z             {
2026-06-21T04:47:53.9624856Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T04:47:53.9624960Z               "line": 216
2026-06-21T04:47:53.9625065Z             },
2026-06-21T04:47:53.9625175Z             {
2026-06-21T04:47:53.9625307Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:53.9625409Z               "line": 533
2026-06-21T04:47:53.9625513Z             },
2026-06-21T04:47:53.9625613Z             {
2026-06-21T04:47:53.9625743Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T04:47:53.9625852Z               "line": 78
2026-06-21T04:47:53.9625951Z             },
2026-06-21T04:47:53.9626062Z             {
2026-06-21T04:47:53.9626199Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9626305Z               "line": 3111
2026-06-21T04:47:53.9626410Z             }
2026-06-21T04:47:53.9626509Z           ]
2026-06-21T04:47:53.9626620Z         },
2026-06-21T04:47:53.9626721Z         "int": {
2026-06-21T04:47:53.9626833Z           "complete": true,
2026-06-21T04:47:53.9627038Z           "evidence": [
2026-06-21T04:47:53.9627136Z             {
2026-06-21T04:47:53.9627288Z               "path": "crates/spt/tests/poll_envelope_e2e.rs",
2026-06-21T04:47:53.9627389Z               "line": 15
2026-06-21T04:47:53.9627489Z             }
2026-06-21T04:47:53.9627593Z           ]
2026-06-21T04:47:53.9627699Z         },
2026-06-21T04:47:53.9627799Z         "unit": {
2026-06-21T04:47:53.9627903Z           "complete": true,
2026-06-21T04:47:53.9628014Z           "evidence": [
2026-06-21T04:47:53.9628104Z             {
2026-06-21T04:47:53.9628237Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T04:47:53.9628418Z               "line": 102
2026-06-21T04:47:53.9628518Z             },
2026-06-21T04:47:53.9628624Z             {
2026-06-21T04:47:53.9628753Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T04:47:53.9628862Z               "line": 137
2026-06-21T04:47:53.9629052Z             },
2026-06-21T04:47:53.9629157Z             {
2026-06-21T04:47:53.9629292Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T04:47:53.9629395Z               "line": 98
2026-06-21T04:47:53.9629501Z             },
2026-06-21T04:47:53.9629597Z             {
2026-06-21T04:47:53.9629724Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T04:47:53.9629828Z               "line": 106
2026-06-21T04:47:53.9629934Z             },
2026-06-21T04:47:53.9630034Z             {
2026-06-21T04:47:53.9630157Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T04:47:53.9630263Z               "line": 113
2026-06-21T04:47:53.9630354Z             },
2026-06-21T04:47:53.9630462Z             {
2026-06-21T04:47:53.9630597Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T04:47:53.9630701Z               "line": 122
2026-06-21T04:47:53.9630802Z             }
2026-06-21T04:47:53.9630902Z           ]
2026-06-21T04:47:53.9631007Z         }
2026-06-21T04:47:53.9631102Z       }
2026-06-21T04:47:53.9631213Z     },
2026-06-21T04:47:53.9631322Z     {
2026-06-21T04:47:53.9631470Z       "id": "REQ-MSG-IDLE-TRANSLATION-BINARY",
2026-06-21T04:47:53.9636526Z       "title": "spt-hosted idle message delivery via an adapter TRANSLATION BINARY (ADR-0022). New opt-in manifest section `[message-idle-translation-binary]` = a TABLE carrying a `path` scalar (doyle OPT-B ruling: modeled as a table, not a bare top-level scalar, so a preceding section cannot silently absorb it + N+1 extensible; spt-core does NOT deny_unknown_fields, so a future key degrades gracefully); spt-core LIFECYCLE-manages it (spawn when the endpoint comes up, terminate when it goes down). The binary is a PURE stdin→stdout filter; spt-core owns EVERY PTY write. stdin (JSON-lines): `{type:\"init\",endpoint_id,node}` first · `{type:\"event\",envelope:\"<EVENT…>\"}` per inbound message (ADR-0020 envelope) · `{type:\"input\"}` content-free ping on each operator keystroke (binary tracks user-idle for its own idle-gated buffering; PTY input content NOT duplicated). stdout (JSON-lines): keystroke-commands `{key:…}`/`{delay_ms:…}`/`{text:…}` (extensible). spt-core applies the emitted sequence to the broker PTY ATOMICALLY (the W1 coordination — REQ-HAZARD-INJECT-CONTROL-COEXIST). The daemon poll feed is the ONE idle substrate for both topologies (Q1=A): harness-hosted consumer = the Monitor child, spt-hosted consumer = this binary; spt-core PREFERS a perch's poll listener if one exists (so spt-hosted can run a listener AND keep `spt rc`). Idle-only; busy/mid-turn = adapter hook-injection. Closes the current grounding gap: `api bind` registers no listener port → a listener-less spt-hosted perch SPOOLS inbound (only spooling+adapter-poll works today) → this delivers real inbound into the PTY. The v0.11.0 raw inject is the degenerate `{text:payload}{key:enter}` case. (v0.13.0)",
2026-06-21T04:47:53.9636670Z       "requiredStages": [
2026-06-21T04:47:53.9636774Z         "doc",
2026-06-21T04:47:53.9636875Z         "impl",
2026-06-21T04:47:53.9636980Z         "unit",
2026-06-21T04:47:53.9637079Z         "int"
2026-06-21T04:47:53.9637319Z       ],
2026-06-21T04:47:53.9637422Z       "stages": {
2026-06-21T04:47:53.9637531Z         "doc": {
2026-06-21T04:47:53.9637645Z           "complete": true,
2026-06-21T04:47:53.9637744Z           "evidence": [
2026-06-21T04:47:53.9637839Z             {
2026-06-21T04:47:53.9637997Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-21T04:47:53.9638110Z               "line": 277
2026-06-21T04:47:53.9638207Z             },
2026-06-21T04:47:53.9638311Z             {
2026-06-21T04:47:53.9638434Z               "path": "docs/MANIFEST.md",
2026-06-21T04:47:53.9638536Z               "line": 198
2026-06-21T04:47:53.9638640Z             }
2026-06-21T04:47:53.9638837Z           ]
2026-06-21T04:47:53.9639026Z         },
2026-06-21T04:47:53.9639122Z         "impl": {
2026-06-21T04:47:53.9639222Z           "complete": true,
2026-06-21T04:47:53.9639337Z           "evidence": [
2026-06-21T04:47:53.9639427Z             {
2026-06-21T04:47:53.9639565Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.9639680Z               "line": 977
2026-06-21T04:47:53.9639781Z             },
2026-06-21T04:47:53.9639876Z             {
2026-06-21T04:47:53.9640032Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T04:47:53.9640134Z               "line": 23
2026-06-21T04:47:53.9640233Z             },
2026-06-21T04:47:53.9640332Z             {
2026-06-21T04:47:53.9640480Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T04:47:53.9640585Z               "line": 91
2026-06-21T04:47:53.9640684Z             },
2026-06-21T04:47:53.9640780Z             {
2026-06-21T04:47:53.9640914Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T04:47:53.9641018Z               "line": 239
2026-06-21T04:47:53.9641124Z             },
2026-06-21T04:47:53.9641224Z             {
2026-06-21T04:47:53.9641362Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T04:47:53.9641467Z               "line": 287
2026-06-21T04:47:53.9641576Z             },
2026-06-21T04:47:53.9641676Z             {
2026-06-21T04:47:53.9641820Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T04:47:53.9641915Z               "line": 311
2026-06-21T04:47:53.9642016Z             },
2026-06-21T04:47:53.9642121Z             {
2026-06-21T04:47:53.9642258Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:53.9642369Z               "line": 60
2026-06-21T04:47:53.9642477Z             },
2026-06-21T04:47:53.9642577Z             {
2026-06-21T04:47:53.9642715Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:53.9642813Z               "line": 889
2026-06-21T04:47:53.9642927Z             }
2026-06-21T04:47:53.9643027Z           ]
2026-06-21T04:47:53.9643133Z         },
2026-06-21T04:47:53.9643237Z         "int": {
2026-06-21T04:47:53.9643347Z           "complete": true,
2026-06-21T04:47:53.9643457Z           "evidence": [
2026-06-21T04:47:53.9643556Z             {
2026-06-21T04:47:53.9643728Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T04:47:53.9643832Z               "line": 1081
2026-06-21T04:47:53.9643939Z             },
2026-06-21T04:47:53.9644043Z             {
2026-06-21T04:47:53.9644210Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T04:47:53.9644320Z               "line": 1186
2026-06-21T04:47:53.9644415Z             },
2026-06-21T04:47:53.9644524Z             {
2026-06-21T04:47:53.9644691Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T04:47:53.9644791Z               "line": 1254
2026-06-21T04:47:53.9644897Z             },
2026-06-21T04:47:53.9645002Z             {
2026-06-21T04:47:53.9645164Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T04:47:53.9645255Z               "line": 1347
2026-06-21T04:47:53.9645363Z             }
2026-06-21T04:47:53.9645472Z           ]
2026-06-21T04:47:53.9645572Z         },
2026-06-21T04:47:53.9645789Z         "unit": {
2026-06-21T04:47:53.9645895Z           "complete": true,
2026-06-21T04:47:53.9646009Z           "evidence": [
2026-06-21T04:47:53.9646113Z             {
2026-06-21T04:47:53.9646248Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T04:47:53.9646357Z               "line": 270
2026-06-21T04:47:53.9646456Z             },
2026-06-21T04:47:53.9646558Z             {
2026-06-21T04:47:53.9646700Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T04:47:53.9646810Z               "line": 350
2026-06-21T04:47:53.9646910Z             },
2026-06-21T04:47:53.9647019Z             {
2026-06-21T04:47:53.9647159Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T04:47:53.9647358Z               "line": 381
2026-06-21T04:47:53.9647464Z             },
2026-06-21T04:47:53.9647568Z             {
2026-06-21T04:47:53.9647716Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T04:47:53.9647827Z               "line": 411
2026-06-21T04:47:53.9647930Z             },
2026-06-21T04:47:53.9648034Z             {
2026-06-21T04:47:53.9648158Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T04:47:53.9648270Z               "line": 440
2026-06-21T04:47:53.9648370Z             },
2026-06-21T04:47:53.9648476Z             {
2026-06-21T04:47:53.9648619Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:53.9648728Z               "line": 1181
2026-06-21T04:47:53.9648829Z             }
2026-06-21T04:47:53.9648928Z           ]
2026-06-21T04:47:53.9649110Z         }
2026-06-21T04:47:53.9649205Z       }
2026-06-21T04:47:53.9649309Z     },
2026-06-21T04:47:53.9649411Z     {
2026-06-21T04:47:53.9649525Z       "id": "REQ-NET-1",
2026-06-21T04:47:53.9649731Z       "title": "WAN messaging first-class, behind default-on net feature flag",
2026-06-21T04:47:53.9649849Z       "requiredStages": [
2026-06-21T04:47:53.9649963Z         "impl",
2026-06-21T04:47:53.9650064Z         "unit",
2026-06-21T04:47:53.9650177Z         "int"
2026-06-21T04:47:53.9650277Z       ],
2026-06-21T04:47:53.9650388Z       "stages": {
2026-06-21T04:47:53.9650492Z         "doc": {
2026-06-21T04:47:53.9650607Z           "complete": false,
2026-06-21T04:47:53.9650717Z           "evidence": []
2026-06-21T04:47:53.9650821Z         },
2026-06-21T04:47:53.9650915Z         "impl": {
2026-06-21T04:47:53.9651025Z           "complete": true,
2026-06-21T04:47:53.9651140Z           "evidence": [
2026-06-21T04:47:53.9651239Z             {
2026-06-21T04:47:53.9651379Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T04:47:53.9651483Z               "line": 54
2026-06-21T04:47:53.9651568Z             },
2026-06-21T04:47:53.9651675Z             {
2026-06-21T04:47:53.9651808Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T04:47:53.9651917Z               "line": 594
2026-06-21T04:47:53.9652022Z             },
2026-06-21T04:47:53.9652127Z             {
2026-06-21T04:47:53.9652261Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T04:47:53.9652366Z               "line": 130
2026-06-21T04:47:53.9652466Z             },
2026-06-21T04:47:53.9652561Z             {
2026-06-21T04:47:53.9652704Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T04:47:53.9652818Z               "line": 97
2026-06-21T04:47:53.9652910Z             },
2026-06-21T04:47:53.9653005Z             {
2026-06-21T04:47:53.9653132Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T04:47:53.9653237Z               "line": 159
2026-06-21T04:47:53.9653346Z             },
2026-06-21T04:47:53.9653444Z             {
2026-06-21T04:47:53.9653578Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T04:47:53.9653689Z               "line": 175
2026-06-21T04:47:53.9653797Z             },
2026-06-21T04:47:53.9653892Z             {
2026-06-21T04:47:53.9654026Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T04:47:53.9654135Z               "line": 190
2026-06-21T04:47:53.9654341Z             },
2026-06-21T04:47:53.9654440Z             {
2026-06-21T04:47:53.9654575Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T04:47:53.9654680Z               "line": 271
2026-06-21T04:47:53.9654779Z             },
2026-06-21T04:47:53.9654890Z             {
2026-06-21T04:47:53.9655032Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T04:47:53.9655133Z               "line": 306
2026-06-21T04:47:53.9655238Z             },
2026-06-21T04:47:53.9655333Z             {
2026-06-21T04:47:53.9655472Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T04:47:53.9655581Z               "line": 312
2026-06-21T04:47:53.9655777Z             },
2026-06-21T04:47:53.9655886Z             {
2026-06-21T04:47:53.9656023Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T04:47:53.9656137Z               "line": 318
2026-06-21T04:47:53.9656241Z             },
2026-06-21T04:47:53.9656345Z             {
2026-06-21T04:47:53.9656479Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T04:47:53.9656597Z               "line": 334
2026-06-21T04:47:53.9656702Z             },
2026-06-21T04:47:53.9656804Z             {
2026-06-21T04:47:53.9656940Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T04:47:53.9657041Z               "line": 354
2026-06-21T04:47:53.9657146Z             },
2026-06-21T04:47:53.9657250Z             {
2026-06-21T04:47:53.9657389Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T04:47:53.9657503Z               "line": 35
2026-06-21T04:47:53.9657603Z             },
2026-06-21T04:47:53.9657709Z             {
2026-06-21T04:47:53.9657842Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T04:47:53.9657947Z               "line": 85
2026-06-21T04:47:53.9658048Z             },
2026-06-21T04:47:53.9658152Z             {
2026-06-21T04:47:53.9658290Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T04:47:53.9658387Z               "line": 138
2026-06-21T04:47:53.9658499Z             },
2026-06-21T04:47:53.9658589Z             {
2026-06-21T04:47:53.9658719Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9658826Z               "line": 2953
2026-06-21T04:47:53.9658930Z             },
2026-06-21T04:47:53.9659122Z             {
2026-06-21T04:47:53.9659244Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T04:47:53.9659365Z               "line": 17
2026-06-21T04:47:53.9659479Z             }
2026-06-21T04:47:53.9659583Z           ]
2026-06-21T04:47:53.9659689Z         },
2026-06-21T04:47:53.9659794Z         "int": {
2026-06-21T04:47:53.9659913Z           "complete": true,
2026-06-21T04:47:53.9660027Z           "evidence": [
2026-06-21T04:47:53.9660142Z             {
2026-06-21T04:47:53.9660291Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T04:47:53.9660404Z               "line": 341
2026-06-21T04:47:53.9660504Z             },
2026-06-21T04:47:53.9660601Z             {
2026-06-21T04:47:53.9660766Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T04:47:53.9660872Z               "line": 675
2026-06-21T04:47:53.9660982Z             },
2026-06-21T04:47:53.9661081Z             {
2026-06-21T04:47:53.9661220Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T04:47:53.9661320Z               "line": 973
2026-06-21T04:47:53.9661414Z             }
2026-06-21T04:47:53.9661519Z           ]
2026-06-21T04:47:53.9661620Z         },
2026-06-21T04:47:53.9661729Z         "unit": {
2026-06-21T04:47:53.9661838Z           "complete": true,
2026-06-21T04:47:53.9661949Z           "evidence": [
2026-06-21T04:47:53.9662057Z             {
2026-06-21T04:47:53.9662197Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T04:47:53.9662311Z               "line": 651
2026-06-21T04:47:53.9662410Z             },
2026-06-21T04:47:53.9662516Z             {
2026-06-21T04:47:53.9662653Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T04:47:53.9662763Z               "line": 686
2026-06-21T04:47:53.9662973Z             },
2026-06-21T04:47:53.9663068Z             {
2026-06-21T04:47:53.9663222Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T04:47:53.9663330Z               "line": 940
2026-06-21T04:47:53.9663436Z             },
2026-06-21T04:47:53.9663537Z             {
2026-06-21T04:47:53.9663673Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T04:47:53.9663783Z               "line": 201
2026-06-21T04:47:53.9663882Z             },
2026-06-21T04:47:53.9663990Z             {
2026-06-21T04:47:53.9664119Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T04:47:53.9664323Z               "line": 442
2026-06-21T04:47:53.9664419Z             },
2026-06-21T04:47:53.9664515Z             {
2026-06-21T04:47:53.9664671Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T04:47:53.9664773Z               "line": 456
2026-06-21T04:47:53.9664882Z             },
2026-06-21T04:47:53.9665030Z             {
2026-06-21T04:47:53.9665169Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T04:47:53.9665273Z               "line": 475
2026-06-21T04:47:53.9665373Z             },
2026-06-21T04:47:53.9665474Z             {
2026-06-21T04:47:53.9665611Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T04:47:53.9665717Z               "line": 120
2026-06-21T04:47:53.9665821Z             },
2026-06-21T04:47:53.9665926Z             {
2026-06-21T04:47:53.9666061Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T04:47:53.9666169Z               "line": 163
2026-06-21T04:47:53.9666274Z             },
2026-06-21T04:47:53.9666380Z             {
2026-06-21T04:47:53.9666512Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T04:47:53.9666602Z               "line": 530
2026-06-21T04:47:53.9666712Z             },
2026-06-21T04:47:53.9666820Z             {
2026-06-21T04:47:53.9666952Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T04:47:53.9667068Z               "line": 616
2026-06-21T04:47:53.9667172Z             },
2026-06-21T04:47:53.9667276Z             {
2026-06-21T04:47:53.9667396Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T04:47:53.9667505Z               "line": 1006
2026-06-21T04:47:53.9667611Z             }
2026-06-21T04:47:53.9667711Z           ]
2026-06-21T04:47:53.9667816Z         }
2026-06-21T04:47:53.9667916Z       }
2026-06-21T04:47:53.9668022Z     },
2026-06-21T04:47:53.9668121Z     {
2026-06-21T04:47:53.9668240Z       "id": "REQ-NET-2",
2026-06-21T04:47:53.9668445Z       "title": "n0 relay default + self-host knob + plain-language disclosure",
2026-06-21T04:47:53.9668560Z       "requiredStages": [
2026-06-21T04:47:53.9668666Z         "impl"
2026-06-21T04:47:53.9668769Z       ],
2026-06-21T04:47:53.9668880Z       "stages": {
2026-06-21T04:47:53.9669064Z         "doc": {
2026-06-21T04:47:53.9669182Z           "complete": false,
2026-06-21T04:47:53.9669298Z           "evidence": []
2026-06-21T04:47:53.9669395Z         },
2026-06-21T04:47:53.9669504Z         "impl": {
2026-06-21T04:47:53.9669610Z           "complete": true,
2026-06-21T04:47:53.9669724Z           "evidence": [
2026-06-21T04:47:53.9669829Z             {
2026-06-21T04:47:53.9669968Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T04:47:53.9670077Z               "line": 57
2026-06-21T04:47:53.9670178Z             },
2026-06-21T04:47:53.9670287Z             {
2026-06-21T04:47:53.9670430Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T04:47:53.9670541Z               "line": 71
2026-06-21T04:47:53.9670645Z             },
2026-06-21T04:47:53.9670745Z             {
2026-06-21T04:47:53.9670898Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T04:47:53.9671002Z               "line": 81
2026-06-21T04:47:53.9671107Z             },
2026-06-21T04:47:53.9671204Z             {
2026-06-21T04:47:53.9671346Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T04:47:53.9671456Z               "line": 159
2026-06-21T04:47:53.9671684Z             },
2026-06-21T04:47:53.9671780Z             {
2026-06-21T04:47:53.9671917Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T04:47:53.9672021Z               "line": 175
2026-06-21T04:47:53.9672122Z             },
2026-06-21T04:47:53.9672228Z             {
2026-06-21T04:47:53.9672359Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T04:47:53.9672471Z               "line": 190
2026-06-21T04:47:53.9672575Z             }
2026-06-21T04:47:53.9672679Z           ]
2026-06-21T04:47:53.9672786Z         },
2026-06-21T04:47:53.9672885Z         "int": {
2026-06-21T04:47:53.9673008Z           "complete": false,
2026-06-21T04:47:53.9673200Z           "evidence": []
2026-06-21T04:47:53.9673290Z         },
2026-06-21T04:47:53.9673396Z         "unit": {
2026-06-21T04:47:53.9673500Z           "complete": true,
2026-06-21T04:47:53.9673610Z           "evidence": [
2026-06-21T04:47:53.9673711Z             {
2026-06-21T04:47:53.9673852Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T04:47:53.9673953Z               "line": 402
2026-06-21T04:47:53.9674064Z             }
2026-06-21T04:47:53.9674172Z           ]
2026-06-21T04:47:53.9674271Z         }
2026-06-21T04:47:53.9674381Z       }
2026-06-21T04:47:53.9674480Z     },
2026-06-21T04:47:53.9674593Z     {
2026-06-21T04:47:53.9674689Z       "id": "REQ-NET-3",
2026-06-21T04:47:53.9674912Z       "title": "Cross-node Psyche sync over P2P replaces gh-repo-sync",
2026-06-21T04:47:53.9675032Z       "requiredStages": [
2026-06-21T04:47:53.9675137Z         "impl",
2026-06-21T04:47:53.9675246Z         "unit"
2026-06-21T04:47:53.9675342Z       ],
2026-06-21T04:47:53.9675461Z       "stages": {
2026-06-21T04:47:53.9675560Z         "doc": {
2026-06-21T04:47:53.9675681Z           "complete": false,
2026-06-21T04:47:53.9675786Z           "evidence": []
2026-06-21T04:47:53.9675890Z         },
2026-06-21T04:47:53.9675996Z         "impl": {
2026-06-21T04:47:53.9676105Z           "complete": true,
2026-06-21T04:47:53.9676224Z           "evidence": [
2026-06-21T04:47:53.9676325Z             {
2026-06-21T04:47:53.9676468Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T04:47:53.9676573Z               "line": 39
2026-06-21T04:47:53.9676673Z             },
2026-06-21T04:47:53.9676772Z             {
2026-06-21T04:47:53.9676907Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T04:47:53.9677016Z               "line": 182
2026-06-21T04:47:53.9677114Z             },
2026-06-21T04:47:53.9677210Z             {
2026-06-21T04:47:53.9677342Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T04:47:53.9677450Z               "line": 333
2026-06-21T04:47:53.9677556Z             },
2026-06-21T04:47:53.9677661Z             {
2026-06-21T04:47:53.9677794Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T04:47:53.9677900Z               "line": 36
2026-06-21T04:47:53.9678010Z             },
2026-06-21T04:47:53.9678108Z             {
2026-06-21T04:47:53.9678248Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T04:47:53.9678348Z               "line": 158
2026-06-21T04:47:53.9678447Z             },
2026-06-21T04:47:53.9678543Z             {
2026-06-21T04:47:53.9678691Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T04:47:53.9678800Z               "line": 238
2026-06-21T04:47:53.9678911Z             },
2026-06-21T04:47:53.9679082Z             {
2026-06-21T04:47:53.9679231Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T04:47:53.9679334Z               "line": 259
2026-06-21T04:47:53.9679440Z             },
2026-06-21T04:47:53.9679540Z             {
2026-06-21T04:47:53.9679686Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T04:47:53.9679796Z               "line": 317
2026-06-21T04:47:53.9679895Z             },
2026-06-21T04:47:53.9679998Z             {
2026-06-21T04:47:53.9680137Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T04:47:53.9680346Z               "line": 336
2026-06-21T04:47:53.9680452Z             },
2026-06-21T04:47:53.9680552Z             {
2026-06-21T04:47:53.9680699Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T04:47:53.9680805Z               "line": 374
2026-06-21T04:47:53.9680910Z             },
2026-06-21T04:47:53.9681004Z             {
2026-06-21T04:47:53.9681153Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T04:47:53.9681262Z               "line": 419
2026-06-21T04:47:53.9681362Z             },
2026-06-21T04:47:53.9681454Z             {
2026-06-21T04:47:53.9681581Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T04:47:53.9681801Z               "line": 432
2026-06-21T04:47:53.9681901Z             },
2026-06-21T04:47:53.9682002Z             {
2026-06-21T04:47:53.9682139Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T04:47:53.9682244Z               "line": 29
2026-06-21T04:47:53.9682350Z             },
2026-06-21T04:47:53.9682454Z             {
2026-06-21T04:47:53.9682600Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T04:47:53.9682706Z               "line": 72
2026-06-21T04:47:53.9682806Z             },
2026-06-21T04:47:53.9682911Z             {
2026-06-21T04:47:53.9683045Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T04:47:53.9683149Z               "line": 123
2026-06-21T04:47:53.9683249Z             }
2026-06-21T04:47:53.9683360Z           ]
2026-06-21T04:47:53.9683460Z         },
2026-06-21T04:47:53.9683564Z         "int": {
2026-06-21T04:47:53.9683675Z           "complete": false,
2026-06-21T04:47:53.9683784Z           "evidence": []
2026-06-21T04:47:53.9683893Z         },
2026-06-21T04:47:53.9683994Z         "unit": {
2026-06-21T04:47:53.9684108Z           "complete": true,
2026-06-21T04:47:53.9684203Z           "evidence": [
2026-06-21T04:47:53.9684305Z             {
2026-06-21T04:47:53.9684451Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T04:47:53.9684551Z               "line": 223
2026-06-21T04:47:53.9684657Z             },
2026-06-21T04:47:53.9684756Z             {
2026-06-21T04:47:53.9684893Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T04:47:53.9685002Z               "line": 351
2026-06-21T04:47:53.9685125Z             },
2026-06-21T04:47:53.9685234Z             {
2026-06-21T04:47:53.9685369Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T04:47:53.9685486Z               "line": 504
2026-06-21T04:47:53.9685583Z             },
2026-06-21T04:47:53.9685688Z             {
2026-06-21T04:47:53.9685840Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T04:47:53.9685960Z               "line": 93
2026-06-21T04:47:53.9686064Z             },
2026-06-21T04:47:53.9686160Z             {
2026-06-21T04:47:53.9686298Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T04:47:53.9686402Z               "line": 142
2026-06-21T04:47:53.9686508Z             },
2026-06-21T04:47:53.9686608Z             {
2026-06-21T04:47:53.9686746Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T04:47:53.9686852Z               "line": 315
2026-06-21T04:47:53.9686956Z             },
2026-06-21T04:47:53.9687061Z             {
2026-06-21T04:47:53.9687195Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T04:47:53.9687308Z               "line": 355
2026-06-21T04:47:53.9687409Z             },
2026-06-21T04:47:53.9687510Z             {
2026-06-21T04:47:53.9687656Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T04:47:53.9687756Z               "line": 494
2026-06-21T04:47:53.9687870Z             }
2026-06-21T04:47:53.9687968Z           ]
2026-06-21T04:47:53.9688077Z         }
2026-06-21T04:47:53.9688179Z       }
2026-06-21T04:47:53.9688278Z     },
2026-06-21T04:47:53.9688388Z     {
2026-06-21T04:47:53.9688508Z       "id": "REQ-NODE-IDENTITY",
2026-06-21T04:47:53.9688765Z       "title": "Ed25519 identity primitive: keypair, detached sign/verify, stable pubkey<->hex",
2026-06-21T04:47:53.9689036Z       "requiredStages": [
2026-06-21T04:47:53.9689142Z         "impl",
2026-06-21T04:47:53.9689237Z         "unit"
2026-06-21T04:47:53.9689337Z       ],
2026-06-21T04:47:53.9689442Z       "stages": {
2026-06-21T04:47:53.9689546Z         "doc": {
2026-06-21T04:47:53.9689656Z           "complete": false,
2026-06-21T04:47:53.9689752Z           "evidence": []
2026-06-21T04:47:53.9689865Z         },
2026-06-21T04:47:53.9689966Z         "impl": {
2026-06-21T04:47:53.9690082Z           "complete": true,
2026-06-21T04:47:53.9690194Z           "evidence": [
2026-06-21T04:47:53.9690298Z             {
2026-06-21T04:47:53.9690441Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T04:47:53.9690639Z               "line": 60
2026-06-21T04:47:53.9690741Z             },
2026-06-21T04:47:53.9690850Z             {
2026-06-21T04:47:53.9690978Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T04:47:53.9691088Z               "line": 68
2026-06-21T04:47:53.9691188Z             },
2026-06-21T04:47:53.9691293Z             {
2026-06-21T04:47:53.9691422Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T04:47:53.9691535Z               "line": 86
2026-06-21T04:47:53.9691642Z             },
2026-06-21T04:47:53.9691741Z             {
2026-06-21T04:47:53.9691884Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T04:47:53.9691985Z               "line": 120
2026-06-21T04:47:53.9692094Z             },
2026-06-21T04:47:53.9692189Z             {
2026-06-21T04:47:53.9692319Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T04:47:53.9692427Z               "line": 127
2026-06-21T04:47:53.9692528Z             },
2026-06-21T04:47:53.9692634Z             {
2026-06-21T04:47:53.9692761Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T04:47:53.9692872Z               "line": 143
2026-06-21T04:47:53.9692973Z             },
2026-06-21T04:47:53.9693085Z             {
2026-06-21T04:47:53.9693223Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T04:47:53.9693324Z               "line": 16
2026-06-21T04:47:53.9693423Z             }
2026-06-21T04:47:53.9693533Z           ]
2026-06-21T04:47:53.9693634Z         },
2026-06-21T04:47:53.9693737Z         "int": {
2026-06-21T04:47:53.9697196Z           "complete": false,
2026-06-21T04:47:53.9697344Z           "evidence": []
2026-06-21T04:47:53.9697441Z         },
2026-06-21T04:47:53.9697597Z         "unit": {
2026-06-21T04:47:53.9697717Z           "complete": true,
2026-06-21T04:47:53.9697844Z           "evidence": [
2026-06-21T04:47:53.9697936Z             {
2026-06-21T04:47:53.9698094Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T04:47:53.9698216Z               "line": 199
2026-06-21T04:47:53.9698316Z             },
2026-06-21T04:47:53.9698411Z             {
2026-06-21T04:47:53.9698557Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T04:47:53.9698676Z               "line": 218
2026-06-21T04:47:53.9698777Z             },
2026-06-21T04:47:53.9698890Z             {
2026-06-21T04:47:53.9699096Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T04:47:53.9699205Z               "line": 234
2026-06-21T04:47:53.9699311Z             },
2026-06-21T04:47:53.9699420Z             {
2026-06-21T04:47:53.9699577Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T04:47:53.9699678Z               "line": 256
2026-06-21T04:47:53.9699782Z             },
2026-06-21T04:47:53.9699887Z             {
2026-06-21T04:47:53.9700026Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T04:47:53.9700135Z               "line": 124
2026-06-21T04:47:53.9700231Z             },
2026-06-21T04:47:53.9700336Z             {
2026-06-21T04:47:53.9700469Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T04:47:53.9700580Z               "line": 140
2026-06-21T04:47:53.9700684Z             },
2026-06-21T04:47:53.9700773Z             {
2026-06-21T04:47:53.9700906Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T04:47:53.9701142Z               "line": 155
2026-06-21T04:47:53.9701253Z             }
2026-06-21T04:47:53.9701354Z           ]
2026-06-21T04:47:53.9701447Z         }
2026-06-21T04:47:53.9701543Z       }
2026-06-21T04:47:53.9701644Z     },
2026-06-21T04:47:53.9701753Z     {
2026-06-21T04:47:53.9701863Z       "id": "REQ-NOTIF-1",
2026-06-21T04:47:53.9702250Z       "title": "Notification primitive: per-subnet replicated spool, seen/dismissed, resurface-at-boundary, subsumes update+consent prompts",
2026-06-21T04:47:53.9702359Z       "requiredStages": [
2026-06-21T04:47:53.9702464Z         "impl",
2026-06-21T04:47:53.9702569Z         "unit",
2026-06-21T04:47:53.9702797Z         "int"
2026-06-21T04:47:53.9702908Z       ],
2026-06-21T04:47:53.9703012Z       "stages": {
2026-06-21T04:47:53.9703117Z         "doc": {
2026-06-21T04:47:53.9703223Z           "complete": false,
2026-06-21T04:47:53.9703336Z           "evidence": []
2026-06-21T04:47:53.9703442Z         },
2026-06-21T04:47:53.9703538Z         "impl": {
2026-06-21T04:47:53.9703650Z           "complete": true,
2026-06-21T04:47:53.9703754Z           "evidence": [
2026-06-21T04:47:53.9703865Z             {
2026-06-21T04:47:53.9704016Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T04:47:53.9704117Z               "line": 514
2026-06-21T04:47:53.9704222Z             },
2026-06-21T04:47:53.9704321Z             {
2026-06-21T04:47:53.9704447Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T04:47:53.9704556Z               "line": 30
2026-06-21T04:47:53.9704660Z             },
2026-06-21T04:47:53.9704766Z             {
2026-06-21T04:47:53.9704899Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T04:47:53.9704999Z               "line": 69
2026-06-21T04:47:53.9705105Z             },
2026-06-21T04:47:53.9705204Z             {
2026-06-21T04:47:53.9705328Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T04:47:53.9705429Z               "line": 93
2026-06-21T04:47:53.9705537Z             },
2026-06-21T04:47:53.9705638Z             {
2026-06-21T04:47:53.9705773Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T04:47:53.9705881Z               "line": 107
2026-06-21T04:47:53.9705989Z             },
2026-06-21T04:47:53.9706085Z             {
2026-06-21T04:47:53.9706216Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T04:47:53.9706331Z               "line": 142
2026-06-21T04:47:53.9706432Z             },
2026-06-21T04:47:53.9706545Z             {
2026-06-21T04:47:53.9706679Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T04:47:53.9706789Z               "line": 187
2026-06-21T04:47:53.9706898Z             },
2026-06-21T04:47:53.9707004Z             {
2026-06-21T04:47:53.9707147Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T04:47:53.9707255Z               "line": 258
2026-06-21T04:47:53.9707362Z             },
2026-06-21T04:47:53.9707452Z             {
2026-06-21T04:47:53.9707580Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T04:47:53.9707691Z               "line": 372
2026-06-21T04:47:53.9707795Z             },
2026-06-21T04:47:53.9707899Z             {
2026-06-21T04:47:53.9708029Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T04:47:53.9708133Z               "line": 479
2026-06-21T04:47:53.9708229Z             },
2026-06-21T04:47:53.9708330Z             {
2026-06-21T04:47:53.9708477Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T04:47:53.9708587Z               "line": 24
2026-06-21T04:47:53.9708696Z             },
2026-06-21T04:47:53.9708800Z             {
2026-06-21T04:47:53.9708938Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T04:47:53.9709131Z               "line": 34
2026-06-21T04:47:53.9709241Z             },
2026-06-21T04:47:53.9709342Z             {
2026-06-21T04:47:53.9709488Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T04:47:53.9709590Z               "line": 60
2026-06-21T04:47:53.9709789Z             },
2026-06-21T04:47:53.9709895Z             {
2026-06-21T04:47:53.9710033Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T04:47:53.9710132Z               "line": 82
2026-06-21T04:47:53.9710234Z             },
2026-06-21T04:47:53.9710328Z             {
2026-06-21T04:47:53.9710466Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T04:47:53.9710572Z               "line": 94
2026-06-21T04:47:53.9710676Z             },
2026-06-21T04:47:53.9710771Z             {
2026-06-21T04:47:53.9710915Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T04:47:53.9711019Z               "line": 96
2026-06-21T04:47:53.9711235Z             },
2026-06-21T04:47:53.9711338Z             {
2026-06-21T04:47:53.9711510Z               "path": "crates/spt-daemon/src/pump/notif.rs",
2026-06-21T04:47:53.9711636Z               "line": 44
2026-06-21T04:47:53.9711736Z             },
2026-06-21T04:47:53.9711841Z             {
2026-06-21T04:47:53.9712008Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T04:47:53.9712108Z               "line": 20
2026-06-21T04:47:53.9712384Z             },
2026-06-21T04:47:53.9712585Z             {
2026-06-21T04:47:53.9712833Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T04:47:53.9713129Z               "line": 30
2026-06-21T04:47:53.9713348Z             },
2026-06-21T04:47:53.9713538Z             {
2026-06-21T04:47:53.9713778Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T04:47:53.9714059Z               "line": 50
2026-06-21T04:47:53.9714286Z             },
2026-06-21T04:47:53.9714487Z             {
2026-06-21T04:47:53.9714721Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T04:47:53.9715007Z               "line": 28
2026-06-21T04:47:53.9715225Z             },
2026-06-21T04:47:53.9715417Z             {
2026-06-21T04:47:53.9715651Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T04:47:53.9715932Z               "line": 126
2026-06-21T04:47:53.9716160Z             },
2026-06-21T04:47:53.9716366Z             {
2026-06-21T04:47:53.9716607Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T04:47:53.9716891Z               "line": 161
2026-06-21T04:47:53.9717115Z             },
2026-06-21T04:47:53.9717325Z             {
2026-06-21T04:47:53.9717564Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T04:47:53.9717850Z               "line": 202
2026-06-21T04:47:53.9718068Z             },
2026-06-21T04:47:53.9718270Z             {
2026-06-21T04:47:53.9718504Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T04:47:53.9718794Z               "line": 213
2026-06-21T04:47:53.9719104Z             },
2026-06-21T04:47:53.9719336Z             {
2026-06-21T04:47:53.9719569Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T04:47:53.9719845Z               "line": 238
2026-06-21T04:47:53.9720068Z             },
2026-06-21T04:47:53.9720264Z             {
2026-06-21T04:47:53.9720493Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T04:47:53.9720770Z               "line": 261
2026-06-21T04:47:53.9720984Z             },
2026-06-21T04:47:53.9721188Z             {
2026-06-21T04:47:53.9721424Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:53.9721700Z               "line": 86
2026-06-21T04:47:53.9721922Z             }
2026-06-21T04:47:53.9722107Z           ]
2026-06-21T04:47:53.9722310Z         },
2026-06-21T04:47:53.9722511Z         "int": {
2026-06-21T04:47:53.9722740Z           "complete": true,
2026-06-21T04:47:53.9722973Z           "evidence": [
2026-06-21T04:47:53.9723192Z             {
2026-06-21T04:47:53.9723436Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T04:47:53.9723732Z               "line": 285
2026-06-21T04:47:53.9723957Z             },
2026-06-21T04:47:53.9724156Z             {
2026-06-21T04:47:53.9724399Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T04:47:53.9724686Z               "line": 145
2026-06-21T04:47:53.9725009Z             },
2026-06-21T04:47:53.9725208Z             {
2026-06-21T04:47:53.9725451Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T04:47:53.9725738Z               "line": 684
2026-06-21T04:47:53.9725958Z             },
2026-06-21T04:47:53.9726162Z             {
2026-06-21T04:47:53.9726401Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T04:47:53.9726706Z               "line": 1102
2026-06-21T04:47:53.9726936Z             }
2026-06-21T04:47:53.9727139Z           ]
2026-06-21T04:47:53.9727341Z         },
2026-06-21T04:47:53.9727533Z         "unit": {
2026-06-21T04:47:53.9727718Z           "complete": true,
2026-06-21T04:47:53.9728047Z           "evidence": [
2026-06-21T04:47:53.9728233Z             {
2026-06-21T04:47:53.9728439Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T04:47:53.9728701Z               "line": 572
2026-06-21T04:47:53.9728886Z             },
2026-06-21T04:47:53.9729116Z             {
2026-06-21T04:47:53.9729320Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T04:47:53.9729568Z               "line": 636
2026-06-21T04:47:53.9729760Z             },
2026-06-21T04:47:53.9729920Z             {
2026-06-21T04:47:53.9730115Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T04:47:53.9730361Z               "line": 740
2026-06-21T04:47:53.9730547Z             },
2026-06-21T04:47:53.9730720Z             {
2026-06-21T04:47:53.9730919Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T04:47:53.9731158Z               "line": 772
2026-06-21T04:47:53.9731354Z             },
2026-06-21T04:47:53.9731515Z             {
2026-06-21T04:47:53.9731711Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T04:47:53.9731955Z               "line": 840
2026-06-21T04:47:53.9732135Z             },
2026-06-21T04:47:53.9732299Z             {
2026-06-21T04:47:53.9732496Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T04:47:53.9732747Z               "line": 898
2026-06-21T04:47:53.9732947Z             },
2026-06-21T04:47:53.9733109Z             {
2026-06-21T04:47:53.9733305Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T04:47:53.9733543Z               "line": 1173
2026-06-21T04:47:53.9733748Z             },
2026-06-21T04:47:53.9733921Z             {
2026-06-21T04:47:53.9734129Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T04:47:53.9734373Z               "line": 157
2026-06-21T04:47:53.9734555Z             },
2026-06-21T04:47:53.9734716Z             {
2026-06-21T04:47:53.9734912Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T04:47:53.9735166Z               "line": 250
2026-06-21T04:47:53.9735368Z             },
2026-06-21T04:47:53.9735531Z             {
2026-06-21T04:47:53.9735720Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T04:47:53.9735978Z               "line": 273
2026-06-21T04:47:53.9736160Z             },
2026-06-21T04:47:53.9736327Z             {
2026-06-21T04:47:53.9736532Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T04:47:53.9736790Z               "line": 355
2026-06-21T04:47:53.9736985Z             },
2026-06-21T04:47:53.9737157Z             {
2026-06-21T04:47:53.9737362Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T04:47:53.9737618Z               "line": 392
2026-06-21T04:47:53.9737813Z             },
2026-06-21T04:47:53.9737987Z             {
2026-06-21T04:47:53.9738207Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-21T04:47:53.9738484Z               "line": 131
2026-06-21T04:47:53.9738684Z             },
2026-06-21T04:47:53.9738865Z             {
2026-06-21T04:47:53.9739170Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T04:47:53.9739432Z               "line": 72
2026-06-21T04:47:53.9739629Z             },
2026-06-21T04:47:53.9739799Z             {
2026-06-21T04:47:53.9739991Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T04:47:53.9740244Z               "line": 97
2026-06-21T04:47:53.9740546Z             },
2026-06-21T04:47:53.9740727Z             {
2026-06-21T04:47:53.9740931Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T04:47:53.9741183Z               "line": 379
2026-06-21T04:47:53.9741380Z             },
2026-06-21T04:47:53.9741547Z             {
2026-06-21T04:47:53.9741751Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T04:47:53.9741999Z               "line": 417
2026-06-21T04:47:53.9742195Z             },
2026-06-21T04:47:53.9742371Z             {
2026-06-21T04:47:53.9742568Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T04:47:53.9742801Z               "line": 433
2026-06-21T04:47:53.9743094Z             },
2026-06-21T04:47:53.9743261Z             {
2026-06-21T04:47:53.9743450Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T04:47:53.9743693Z               "line": 472
2026-06-21T04:47:53.9743884Z             },
2026-06-21T04:47:53.9744046Z             {
2026-06-21T04:47:53.9744247Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T04:47:53.9744500Z               "line": 489
2026-06-21T04:47:53.9744690Z             },
2026-06-21T04:47:53.9744861Z             {
2026-06-21T04:47:53.9745058Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T04:47:53.9745305Z               "line": 517
2026-06-21T04:47:53.9745500Z             },
2026-06-21T04:47:53.9745663Z             {
2026-06-21T04:47:53.9745871Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T04:47:53.9746125Z               "line": 548
2026-06-21T04:47:53.9746314Z             },
2026-06-21T04:47:53.9746487Z             {
2026-06-21T04:47:53.9746702Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:53.9746964Z               "line": 745
2026-06-21T04:47:53.9747154Z             }
2026-06-21T04:47:53.9747322Z           ]
2026-06-21T04:47:53.9747497Z         }
2026-06-21T04:47:53.9747661Z       }
2026-06-21T04:47:53.9747816Z     },
2026-06-21T04:47:53.9747985Z     {
2026-06-21T04:47:53.9748163Z       "id": "REQ-NOTIF-2",
2026-06-21T04:47:53.9748547Z       "title": "spt notify (agent-issued subnet notif) + notif_command manifest seam (harness + shell adapters)",
2026-06-21T04:47:53.9749011Z       "requiredStages": [
2026-06-21T04:47:53.9749210Z         "doc",
2026-06-21T04:47:53.9749382Z         "impl",
2026-06-21T04:47:53.9749588Z         "unit",
2026-06-21T04:47:53.9749759Z         "int"
2026-06-21T04:47:53.9749931Z       ],
2026-06-21T04:47:53.9750106Z       "stages": {
2026-06-21T04:47:53.9750279Z         "doc": {
2026-06-21T04:47:53.9750460Z           "complete": true,
2026-06-21T04:47:53.9750665Z           "evidence": [
2026-06-21T04:47:53.9750857Z             {
2026-06-21T04:47:53.9751035Z               "path": "CONTEXT.md",
2026-06-21T04:47:53.9751254Z               "line": 509
2026-06-21T04:47:53.9751453Z             },
2026-06-21T04:47:53.9751620Z             {
2026-06-21T04:47:53.9751811Z               "path": "docs/MANIFEST.md",
2026-06-21T04:47:53.9752048Z               "line": 123
2026-06-21T04:47:53.9752235Z             }
2026-06-21T04:47:53.9752411Z           ]
2026-06-21T04:47:53.9752583Z         },
2026-06-21T04:47:53.9752746Z         "impl": {
2026-06-21T04:47:53.9752941Z           "complete": true,
2026-06-21T04:47:53.9753137Z           "evidence": [
2026-06-21T04:47:53.9753332Z             {
2026-06-21T04:47:53.9753536Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T04:47:53.9753784Z               "line": 287
2026-06-21T04:47:53.9753976Z             },
2026-06-21T04:47:53.9754135Z             {
2026-06-21T04:47:53.9754334Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T04:47:53.9754587Z               "line": 301
2026-06-21T04:47:53.9754778Z             },
2026-06-21T04:47:53.9754949Z             {
2026-06-21T04:47:53.9755150Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T04:47:53.9755398Z               "line": 326
2026-06-21T04:47:53.9755584Z             },
2026-06-21T04:47:53.9755855Z             {
2026-06-21T04:47:53.9756061Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:53.9756339Z               "line": 239
2026-06-21T04:47:53.9756535Z             },
2026-06-21T04:47:53.9756709Z             {
2026-06-21T04:47:53.9756918Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:53.9757179Z               "line": 95
2026-06-21T04:47:53.9757371Z             },
2026-06-21T04:47:53.9757543Z             {
2026-06-21T04:47:53.9757733Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9757981Z               "line": 2225
2026-06-21T04:47:53.9758168Z             },
2026-06-21T04:47:53.9758472Z             {
2026-06-21T04:47:53.9758667Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9758905Z               "line": 2274
2026-06-21T04:47:53.9759175Z             },
2026-06-21T04:47:53.9759332Z             {
2026-06-21T04:47:53.9759518Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9759756Z               "line": 2353
2026-06-21T04:47:53.9759952Z             },
2026-06-21T04:47:53.9760125Z             {
2026-06-21T04:47:53.9760314Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9760538Z               "line": 2392
2026-06-21T04:47:53.9760729Z             }
2026-06-21T04:47:53.9760896Z           ]
2026-06-21T04:47:53.9761064Z         },
2026-06-21T04:47:53.9761229Z         "int": {
2026-06-21T04:47:53.9761427Z           "complete": true,
2026-06-21T04:47:53.9761633Z           "evidence": [
2026-06-21T04:47:53.9761809Z             {
2026-06-21T04:47:53.9762018Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T04:47:53.9762284Z               "line": 810
2026-06-21T04:47:53.9762476Z             },
2026-06-21T04:47:53.9762647Z             {
2026-06-21T04:47:53.9762866Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T04:47:53.9763138Z               "line": 1345
2026-06-21T04:47:53.9763326Z             }
2026-06-21T04:47:53.9763501Z           ]
2026-06-21T04:47:53.9763668Z         },
2026-06-21T04:47:53.9763825Z         "unit": {
2026-06-21T04:47:53.9764021Z           "complete": true,
2026-06-21T04:47:53.9764220Z           "evidence": [
2026-06-21T04:47:53.9764414Z             {
2026-06-21T04:47:53.9764613Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T04:47:53.9764880Z               "line": 1022
2026-06-21T04:47:53.9765076Z             },
2026-06-21T04:47:53.9765253Z             {
2026-06-21T04:47:53.9765452Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T04:47:53.9765700Z               "line": 1090
2026-06-21T04:47:53.9765892Z             },
2026-06-21T04:47:53.9766072Z             {
2026-06-21T04:47:53.9766264Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9770784Z               "line": 8210
2026-06-21T04:47:53.9770999Z             },
2026-06-21T04:47:53.9771174Z             {
2026-06-21T04:47:53.9771371Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9771619Z               "line": 8265
2026-06-21T04:47:53.9771828Z             }
2026-06-21T04:47:53.9771996Z           ]
2026-06-21T04:47:53.9772161Z         }
2026-06-21T04:47:53.9772304Z       }
2026-06-21T04:47:53.9772469Z     },
2026-06-21T04:47:53.9772626Z     {
2026-06-21T04:47:53.9772783Z       "id": "REQ-PAIR-1",
2026-06-21T04:47:53.9773008Z       "title": "TOTP-seeded SPAKE2 pairing",
2026-06-21T04:47:53.9773247Z       "requiredStages": [
2026-06-21T04:47:53.9773436Z         "impl",
2026-06-21T04:47:53.9773613Z         "unit",
2026-06-21T04:47:53.9773775Z         "int"
2026-06-21T04:47:53.9773942Z       ],
2026-06-21T04:47:53.9774104Z       "stages": {
2026-06-21T04:47:53.9774281Z         "doc": {
2026-06-21T04:47:53.9774467Z           "complete": false,
2026-06-21T04:47:53.9774676Z           "evidence": []
2026-06-21T04:47:53.9774870Z         },
2026-06-21T04:47:53.9775030Z         "impl": {
2026-06-21T04:47:53.9775212Z           "complete": true,
2026-06-21T04:47:53.9775411Z           "evidence": [
2026-06-21T04:47:53.9775745Z             {
2026-06-21T04:47:53.9775975Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T04:47:53.9776246Z               "line": 27
2026-06-21T04:47:53.9776433Z             },
2026-06-21T04:47:53.9776604Z             {
2026-06-21T04:47:53.9776810Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T04:47:53.9777068Z               "line": 88
2026-06-21T04:47:53.9777247Z             },
2026-06-21T04:47:53.9777416Z             {
2026-06-21T04:47:53.9777628Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T04:47:53.9777881Z               "line": 110
2026-06-21T04:47:53.9778173Z             },
2026-06-21T04:47:53.9778329Z             {
2026-06-21T04:47:53.9778539Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T04:47:53.9778787Z               "line": 153
2026-06-21T04:47:53.9779050Z             },
2026-06-21T04:47:53.9779211Z             {
2026-06-21T04:47:53.9779440Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T04:47:53.9779727Z               "line": 182
2026-06-21T04:47:53.9779910Z             },
2026-06-21T04:47:53.9780072Z             {
2026-06-21T04:47:53.9780276Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T04:47:53.9780523Z               "line": 29
2026-06-21T04:47:53.9780696Z             },
2026-06-21T04:47:53.9780852Z             {
2026-06-21T04:47:53.9781072Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T04:47:53.9781339Z               "line": 31
2026-06-21T04:47:53.9781515Z             },
2026-06-21T04:47:53.9781673Z             {
2026-06-21T04:47:53.9781879Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T04:47:53.9782140Z               "line": 44
2026-06-21T04:47:53.9782321Z             },
2026-06-21T04:47:53.9782480Z             {
2026-06-21T04:47:53.9782683Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T04:47:53.9782934Z               "line": 171
2026-06-21T04:47:53.9783114Z             },
2026-06-21T04:47:53.9783272Z             {
2026-06-21T04:47:53.9783467Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T04:47:53.9783724Z               "line": 376
2026-06-21T04:47:53.9783911Z             }
2026-06-21T04:47:53.9784068Z           ]
2026-06-21T04:47:53.9784230Z         },
2026-06-21T04:47:53.9784402Z         "int": {
2026-06-21T04:47:53.9784573Z           "complete": true,
2026-06-21T04:47:53.9784775Z           "evidence": [
2026-06-21T04:47:53.9784960Z             {
2026-06-21T04:47:53.9785165Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T04:47:53.9785421Z               "line": 645
2026-06-21T04:47:53.9785605Z             },
2026-06-21T04:47:53.9785757Z             {
2026-06-21T04:47:53.9785962Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T04:47:53.9786224Z               "line": 887
2026-06-21T04:47:53.9786411Z             }
2026-06-21T04:47:53.9786577Z           ]
2026-06-21T04:47:53.9786740Z         },
2026-06-21T04:47:53.9786906Z         "unit": {
2026-06-21T04:47:53.9787088Z           "complete": true,
2026-06-21T04:47:53.9787284Z           "evidence": [
2026-06-21T04:47:53.9787455Z             {
2026-06-21T04:47:53.9787670Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T04:47:53.9787933Z               "line": 236
2026-06-21T04:47:53.9788107Z             },
2026-06-21T04:47:53.9788264Z             {
2026-06-21T04:47:53.9788469Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T04:47:53.9788728Z               "line": 349
2026-06-21T04:47:53.9788914Z             },
2026-06-21T04:47:53.9789151Z             {
2026-06-21T04:47:53.9789356Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T04:47:53.9789619Z               "line": 194
2026-06-21T04:47:53.9789795Z             },
2026-06-21T04:47:53.9789953Z             {
2026-06-21T04:47:53.9790153Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T04:47:53.9790500Z               "line": 216
2026-06-21T04:47:53.9790674Z             },
2026-06-21T04:47:53.9790836Z             {
2026-06-21T04:47:53.9791045Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T04:47:53.9791304Z               "line": 230
2026-06-21T04:47:53.9791480Z             },
2026-06-21T04:47:53.9791642Z             {
2026-06-21T04:47:53.9791843Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T04:47:53.9792095Z               "line": 242
2026-06-21T04:47:53.9792277Z             },
2026-06-21T04:47:53.9792425Z             {
2026-06-21T04:47:53.9792624Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T04:47:53.9792982Z               "line": 256
2026-06-21T04:47:53.9793164Z             },
2026-06-21T04:47:53.9793328Z             {
2026-06-21T04:47:53.9793532Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T04:47:53.9793775Z               "line": 270
2026-06-21T04:47:53.9793951Z             },
2026-06-21T04:47:53.9794104Z             {
2026-06-21T04:47:53.9794313Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T04:47:53.9794561Z               "line": 277
2026-06-21T04:47:53.9794738Z             },
2026-06-21T04:47:53.9794900Z             {
2026-06-21T04:47:53.9795091Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T04:47:53.9795354Z               "line": 295
2026-06-21T04:47:53.9795520Z             },
2026-06-21T04:47:53.9795683Z             {
2026-06-21T04:47:53.9795880Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T04:47:53.9796151Z               "line": 968
2026-06-21T04:47:53.9796332Z             },
2026-06-21T04:47:53.9796494Z             {
2026-06-21T04:47:53.9796690Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T04:47:53.9796943Z               "line": 1051
2026-06-21T04:47:53.9797133Z             },
2026-06-21T04:47:53.9797281Z             {
2026-06-21T04:47:53.9797480Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T04:47:53.9797734Z               "line": 1121
2026-06-21T04:47:53.9797916Z             },
2026-06-21T04:47:53.9798077Z             {
2026-06-21T04:47:53.9798273Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T04:47:53.9798522Z               "line": 1182
2026-06-21T04:47:53.9798696Z             },
2026-06-21T04:47:53.9798863Z             {
2026-06-21T04:47:53.9799168Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T04:47:53.9799425Z               "line": 1238
2026-06-21T04:47:53.9799612Z             },
2026-06-21T04:47:53.9799778Z             {
2026-06-21T04:47:53.9799988Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T04:47:53.9800241Z               "line": 1457
2026-06-21T04:47:53.9800418Z             }
2026-06-21T04:47:53.9800574Z           ]
2026-06-21T04:47:53.9800723Z         }
2026-06-21T04:47:53.9800870Z       }
2026-06-21T04:47:53.9801026Z     },
2026-06-21T04:47:53.9801178Z     {
2026-06-21T04:47:53.9801348Z       "id": "REQ-PAIR-2",
2026-06-21T04:47:53.9801600Z       "title": "Local trust store with TOFU + warn-on-change",
2026-06-21T04:47:53.9801878Z       "requiredStages": [],
2026-06-21T04:47:53.9802084Z       "stages": {
2026-06-21T04:47:53.9802249Z         "doc": {
2026-06-21T04:47:53.9802422Z           "complete": false,
2026-06-21T04:47:53.9802626Z           "evidence": []
2026-06-21T04:47:53.9802812Z         },
2026-06-21T04:47:53.9802970Z         "impl": {
2026-06-21T04:47:53.9803141Z           "complete": false,
2026-06-21T04:47:53.9803343Z           "evidence": []
2026-06-21T04:47:53.9803527Z         },
2026-06-21T04:47:53.9803691Z         "int": {
2026-06-21T04:47:53.9803870Z           "complete": false,
2026-06-21T04:47:53.9804069Z           "evidence": []
2026-06-21T04:47:53.9804249Z         },
2026-06-21T04:47:53.9804412Z         "unit": {
2026-06-21T04:47:53.9804593Z           "complete": false,
2026-06-21T04:47:53.9804898Z           "evidence": []
2026-06-21T04:47:53.9805074Z         }
2026-06-21T04:47:53.9805241Z       }
2026-06-21T04:47:53.9805408Z     },
2026-06-21T04:47:53.9805551Z     {
2026-06-21T04:47:53.9805722Z       "id": "REQ-PAIR-3",
2026-06-21T04:47:53.9805971Z       "title": "Fetch current pairing code from any paired node",
2026-06-21T04:47:53.9806267Z       "requiredStages": [
2026-06-21T04:47:53.9806464Z         "impl",
2026-06-21T04:47:53.9806635Z         "unit"
2026-06-21T04:47:53.9806806Z       ],
2026-06-21T04:47:53.9806964Z       "stages": {
2026-06-21T04:47:53.9807135Z         "doc": {
2026-06-21T04:47:53.9807316Z           "complete": false,
2026-06-21T04:47:53.9807613Z           "evidence": []
2026-06-21T04:47:53.9807808Z         },
2026-06-21T04:47:53.9807970Z         "impl": {
2026-06-21T04:47:53.9808143Z           "complete": true,
2026-06-21T04:47:53.9808341Z           "evidence": [
2026-06-21T04:47:53.9808532Z             {
2026-06-21T04:47:53.9808719Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9809039Z               "line": 3259
2026-06-21T04:47:53.9809218Z             },
2026-06-21T04:47:53.9809389Z             {
2026-06-21T04:47:53.9809580Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9809814Z               "line": 3328
2026-06-21T04:47:53.9810005Z             },
2026-06-21T04:47:53.9810167Z             {
2026-06-21T04:47:53.9810348Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9810572Z               "line": 3709
2026-06-21T04:47:53.9810763Z             },
2026-06-21T04:47:53.9810920Z             {
2026-06-21T04:47:53.9811111Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9811341Z               "line": 4961
2026-06-21T04:47:53.9811524Z             }
2026-06-21T04:47:53.9811691Z           ]
2026-06-21T04:47:53.9811846Z         },
2026-06-21T04:47:53.9812014Z         "int": {
2026-06-21T04:47:53.9812184Z           "complete": false,
2026-06-21T04:47:53.9812381Z           "evidence": []
2026-06-21T04:47:53.9812562Z         },
2026-06-21T04:47:53.9812729Z         "unit": {
2026-06-21T04:47:53.9812906Z           "complete": true,
2026-06-21T04:47:53.9813096Z           "evidence": [
2026-06-21T04:47:53.9813278Z             {
2026-06-21T04:47:53.9813458Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9813687Z               "line": 9964
2026-06-21T04:47:53.9813879Z             },
2026-06-21T04:47:53.9814049Z             {
2026-06-21T04:47:53.9814227Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9814458Z               "line": 10179
2026-06-21T04:47:53.9814648Z             },
2026-06-21T04:47:53.9814809Z             {
2026-06-21T04:47:53.9814995Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9815220Z               "line": 10838
2026-06-21T04:47:53.9815414Z             },
2026-06-21T04:47:53.9815577Z             {
2026-06-21T04:47:53.9815753Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9815982Z               "line": 10857
2026-06-21T04:47:53.9816178Z             },
2026-06-21T04:47:53.9816339Z             {
2026-06-21T04:47:53.9816531Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9816756Z               "line": 10881
2026-06-21T04:47:53.9816944Z             },
2026-06-21T04:47:53.9817111Z             {
2026-06-21T04:47:53.9817294Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9817534Z               "line": 10900
2026-06-21T04:47:53.9817714Z             },
2026-06-21T04:47:53.9817881Z             {
2026-06-21T04:47:53.9818073Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9818305Z               "line": 10913
2026-06-21T04:47:53.9818501Z             },
2026-06-21T04:47:53.9818664Z             {
2026-06-21T04:47:53.9818840Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9819130Z               "line": 10922
2026-06-21T04:47:53.9819322Z             }
2026-06-21T04:47:53.9819493Z           ]
2026-06-21T04:47:53.9819579Z         }
2026-06-21T04:47:53.9819792Z       }
2026-06-21T04:47:53.9819878Z     },
2026-06-21T04:47:53.9819964Z     {
2026-06-21T04:47:53.9820065Z       "id": "REQ-PAIR-4",
2026-06-21T04:47:53.9820178Z       "title": "Subnet naming on first pairing",
2026-06-21T04:47:53.9820279Z       "requiredStages": [
2026-06-21T04:47:53.9820370Z         "impl",
2026-06-21T04:47:53.9820464Z         "unit"
2026-06-21T04:47:53.9820545Z       ],
2026-06-21T04:47:53.9820628Z       "stages": {
2026-06-21T04:47:53.9820713Z         "doc": {
2026-06-21T04:47:53.9820808Z           "complete": false,
2026-06-21T04:47:53.9820894Z           "evidence": []
2026-06-21T04:47:53.9820980Z         },
2026-06-21T04:47:53.9821061Z         "impl": {
2026-06-21T04:47:53.9821253Z           "complete": true,
2026-06-21T04:47:53.9821347Z           "evidence": [
2026-06-21T04:47:53.9821437Z             {
2026-06-21T04:47:53.9821558Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T04:47:53.9821643Z               "line": 174
2026-06-21T04:47:53.9821723Z             }
2026-06-21T04:47:53.9821814Z           ]
2026-06-21T04:47:53.9821897Z         },
2026-06-21T04:47:53.9821981Z         "int": {
2026-06-21T04:47:53.9822071Z           "complete": false,
2026-06-21T04:47:53.9822161Z           "evidence": []
2026-06-21T04:47:53.9822247Z         },
2026-06-21T04:47:53.9822336Z         "unit": {
2026-06-21T04:47:53.9822421Z           "complete": true,
2026-06-21T04:47:53.9822512Z           "evidence": [
2026-06-21T04:47:53.9822598Z             {
2026-06-21T04:47:53.9822731Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T04:47:53.9822821Z               "line": 1294
2026-06-21T04:47:53.9822908Z             }
2026-06-21T04:47:53.9822993Z           ]
2026-06-21T04:47:53.9823073Z         }
2026-06-21T04:47:53.9823161Z       }
2026-06-21T04:47:53.9823246Z     },
2026-06-21T04:47:53.9823327Z     {
2026-06-21T04:47:53.9823417Z       "id": "REQ-PAIR-5",
2026-06-21T04:47:53.9823727Z       "title": "Multi-subnet pairing: subnet-name discovery input, create-new-names-up-front, rendezvous-token hashing",
2026-06-21T04:47:53.9823828Z       "requiredStages": [
2026-06-21T04:47:53.9823914Z         "impl",
2026-06-21T04:47:53.9823999Z         "unit",
2026-06-21T04:47:53.9824086Z         "int"
2026-06-21T04:47:53.9824167Z       ],
2026-06-21T04:47:53.9824257Z       "stages": {
2026-06-21T04:47:53.9824343Z         "doc": {
2026-06-21T04:47:53.9824435Z           "complete": false,
2026-06-21T04:47:53.9824534Z           "evidence": []
2026-06-21T04:47:53.9824614Z         },
2026-06-21T04:47:53.9824711Z         "impl": {
2026-06-21T04:47:53.9824811Z           "complete": true,
2026-06-21T04:47:53.9824895Z           "evidence": [
2026-06-21T04:47:53.9824985Z             {
2026-06-21T04:47:53.9825114Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T04:47:53.9825203Z               "line": 44
2026-06-21T04:47:53.9825287Z             },
2026-06-21T04:47:53.9825374Z             {
2026-06-21T04:47:53.9825503Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T04:47:53.9825593Z               "line": 96
2026-06-21T04:47:53.9825683Z             },
2026-06-21T04:47:53.9825771Z             {
2026-06-21T04:47:53.9825894Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T04:47:53.9825984Z               "line": 107
2026-06-21T04:47:53.9826076Z             },
2026-06-21T04:47:53.9826161Z             {
2026-06-21T04:47:53.9826284Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T04:47:53.9826381Z               "line": 124
2026-06-21T04:47:53.9826461Z             },
2026-06-21T04:47:53.9826542Z             {
2026-06-21T04:47:53.9826672Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T04:47:53.9826762Z               "line": 155
2026-06-21T04:47:53.9826852Z             },
2026-06-21T04:47:53.9826938Z             {
2026-06-21T04:47:53.9827068Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T04:47:53.9827161Z               "line": 195
2026-06-21T04:47:53.9827325Z             },
2026-06-21T04:47:53.9827420Z             {
2026-06-21T04:47:53.9827543Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T04:47:53.9827638Z               "line": 251
2026-06-21T04:47:53.9827723Z             },
2026-06-21T04:47:53.9827812Z             {
2026-06-21T04:47:53.9827955Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T04:47:53.9828051Z               "line": 33
2026-06-21T04:47:53.9828136Z             },
2026-06-21T04:47:53.9828222Z             {
2026-06-21T04:47:53.9828370Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T04:47:53.9828517Z               "line": 45
2026-06-21T04:47:53.9828599Z             },
2026-06-21T04:47:53.9828685Z             {
2026-06-21T04:47:53.9828827Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T04:47:53.9828924Z               "line": 59
2026-06-21T04:47:53.9829071Z             },
2026-06-21T04:47:53.9829152Z             {
2026-06-21T04:47:53.9829267Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T04:47:53.9829361Z               "line": 376
2026-06-21T04:47:53.9829438Z             }
2026-06-21T04:47:53.9829524Z           ]
2026-06-21T04:47:53.9829606Z         },
2026-06-21T04:47:53.9829690Z         "int": {
2026-06-21T04:47:53.9829781Z           "complete": true,
2026-06-21T04:47:53.9829864Z           "evidence": [
2026-06-21T04:47:53.9829949Z             {
2026-06-21T04:47:53.9830072Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T04:47:53.9830159Z               "line": 887
2026-06-21T04:47:53.9830240Z             },
2026-06-21T04:47:53.9830320Z             {
2026-06-21T04:47:53.9830452Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T04:47:53.9830534Z               "line": 342
2026-06-21T04:47:53.9830616Z             }
2026-06-21T04:47:53.9830696Z           ]
2026-06-21T04:47:53.9830781Z         },
2026-06-21T04:47:53.9830868Z         "unit": {
2026-06-21T04:47:53.9830954Z           "complete": true,
2026-06-21T04:47:53.9831053Z           "evidence": [
2026-06-21T04:47:53.9831140Z             {
2026-06-21T04:47:53.9831263Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T04:47:53.9831348Z               "line": 293
2026-06-21T04:47:53.9831435Z             },
2026-06-21T04:47:53.9831522Z             {
2026-06-21T04:47:53.9831649Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T04:47:53.9831744Z               "line": 304
2026-06-21T04:47:53.9831832Z             },
2026-06-21T04:47:53.9831931Z             {
2026-06-21T04:47:53.9832055Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T04:47:53.9832147Z               "line": 406
2026-06-21T04:47:53.9832231Z             },
2026-06-21T04:47:53.9832312Z             {
2026-06-21T04:47:53.9832462Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T04:47:53.9832541Z               "line": 72
2026-06-21T04:47:53.9832636Z             },
2026-06-21T04:47:53.9832726Z             {
2026-06-21T04:47:53.9832863Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T04:47:53.9832962Z               "line": 82
2026-06-21T04:47:53.9833048Z             },
2026-06-21T04:47:53.9833129Z             {
2026-06-21T04:47:53.9833258Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T04:47:53.9833343Z               "line": 100
2026-06-21T04:47:53.9833430Z             },
2026-06-21T04:47:53.9833516Z             {
2026-06-21T04:47:53.9833657Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T04:47:53.9833750Z               "line": 110
2026-06-21T04:47:53.9833835Z             },
2026-06-21T04:47:53.9833920Z             {
2026-06-21T04:47:53.9834069Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T04:47:53.9834155Z               "line": 125
2026-06-21T04:47:53.9834244Z             },
2026-06-21T04:47:53.9834436Z             {
2026-06-21T04:47:53.9834545Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T04:47:53.9834641Z               "line": 1044
2026-06-21T04:47:53.9834727Z             },
2026-06-21T04:47:53.9834812Z             {
2026-06-21T04:47:53.9834936Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T04:47:53.9835023Z               "line": 1110
2026-06-21T04:47:53.9838184Z             },
2026-06-21T04:47:53.9838297Z             {
2026-06-21T04:47:53.9838443Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T04:47:53.9838534Z               "line": 1357
2026-06-21T04:47:53.9838616Z             }
2026-06-21T04:47:53.9838845Z           ]
2026-06-21T04:47:53.9838930Z         }
2026-06-21T04:47:53.9839106Z       }
2026-06-21T04:47:53.9839188Z     },
2026-06-21T04:47:53.9839269Z     {
2026-06-21T04:47:53.9839368Z       "id": "REQ-PAIR-6",
2026-06-21T04:47:53.9839646Z       "title": "Elevation-gated per-subnet code fetch (UAC/root or elevated agent; else authenticator app)",
2026-06-21T04:47:53.9839750Z       "requiredStages": [
2026-06-21T04:47:53.9839842Z         "impl",
2026-06-21T04:47:53.9839931Z         "unit"
2026-06-21T04:47:53.9840012Z       ],
2026-06-21T04:47:53.9840099Z       "stages": {
2026-06-21T04:47:53.9840185Z         "doc": {
2026-06-21T04:47:53.9840284Z           "complete": false,
2026-06-21T04:47:53.9840385Z           "evidence": []
2026-06-21T04:47:53.9840467Z         },
2026-06-21T04:47:53.9840547Z         "impl": {
2026-06-21T04:47:53.9840633Z           "complete": true,
2026-06-21T04:47:53.9840724Z           "evidence": [
2026-06-21T04:47:53.9840805Z             {
2026-06-21T04:47:53.9840913Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9841012Z               "line": 3328
2026-06-21T04:47:53.9841099Z             },
2026-06-21T04:47:53.9841176Z             {
2026-06-21T04:47:53.9841274Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9841360Z               "line": 3709
2026-06-21T04:47:53.9841448Z             },
2026-06-21T04:47:53.9841533Z             {
2026-06-21T04:47:53.9841651Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T04:47:53.9841734Z               "line": 18
2026-06-21T04:47:53.9841819Z             },
2026-06-21T04:47:53.9841904Z             {
2026-06-21T04:47:53.9842019Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T04:47:53.9842105Z               "line": 49
2026-06-21T04:47:53.9842186Z             },
2026-06-21T04:47:53.9842271Z             {
2026-06-21T04:47:53.9842387Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T04:47:53.9842476Z               "line": 318
2026-06-21T04:47:53.9842567Z             }
2026-06-21T04:47:53.9842659Z           ]
2026-06-21T04:47:53.9842745Z         },
2026-06-21T04:47:53.9842834Z         "int": {
2026-06-21T04:47:53.9842939Z           "complete": false,
2026-06-21T04:47:53.9843026Z           "evidence": []
2026-06-21T04:47:53.9843115Z         },
2026-06-21T04:47:53.9843196Z         "unit": {
2026-06-21T04:47:53.9843286Z           "complete": true,
2026-06-21T04:47:53.9843377Z           "evidence": [
2026-06-21T04:47:53.9843465Z             {
2026-06-21T04:47:53.9843579Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9843666Z               "line": 10935
2026-06-21T04:47:53.9843752Z             },
2026-06-21T04:47:53.9843841Z             {
2026-06-21T04:47:53.9843947Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9844038Z               "line": 10952
2026-06-21T04:47:53.9844123Z             },
2026-06-21T04:47:53.9844204Z             {
2026-06-21T04:47:53.9844310Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T04:47:53.9844410Z               "line": 383
2026-06-21T04:47:53.9844499Z             },
2026-06-21T04:47:53.9844581Z             {
2026-06-21T04:47:53.9844695Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T04:47:53.9844786Z               "line": 392
2026-06-21T04:47:53.9844871Z             }
2026-06-21T04:47:53.9845053Z           ]
2026-06-21T04:47:53.9845139Z         }
2026-06-21T04:47:53.9845225Z       }
2026-06-21T04:47:53.9845311Z     },
2026-06-21T04:47:53.9845391Z     {
2026-06-21T04:47:53.9845482Z       "id": "REQ-PAIR-7",
2026-06-21T04:47:53.9845644Z       "title": "Subnet icon (inline image metadata, GUI-only consumer)",
2026-06-21T04:47:53.9845744Z       "requiredStages": [],
2026-06-21T04:47:53.9845831Z       "stages": {
2026-06-21T04:47:53.9845922Z         "doc": {
2026-06-21T04:47:53.9846025Z           "complete": false,
2026-06-21T04:47:53.9846119Z           "evidence": []
2026-06-21T04:47:53.9846206Z         },
2026-06-21T04:47:53.9846290Z         "impl": {
2026-06-21T04:47:53.9846485Z           "complete": false,
2026-06-21T04:47:53.9846571Z           "evidence": []
2026-06-21T04:47:53.9846657Z         },
2026-06-21T04:47:53.9846742Z         "int": {
2026-06-21T04:47:53.9846828Z           "complete": false,
2026-06-21T04:47:53.9846919Z           "evidence": []
2026-06-21T04:47:53.9847004Z         },
2026-06-21T04:47:53.9847094Z         "unit": {
2026-06-21T04:47:53.9847196Z           "complete": false,
2026-06-21T04:47:53.9847286Z           "evidence": []
2026-06-21T04:47:53.9847362Z         }
2026-06-21T04:47:53.9847448Z       }
2026-06-21T04:47:53.9847529Z     },
2026-06-21T04:47:53.9847615Z     {
2026-06-21T04:47:53.9847701Z       "id": "REQ-PAIR-8",
2026-06-21T04:47:53.9849205Z       "title": "NTP TOTP offset: the pairing ceremony queries NTP at ceremony time (both sides) and applies the derived offset to the TOTP calculation in-process only; system-clock fallback when NTP is unreachable (offline LAN pairing unaffected — NTP failure never blocks a pairing that succeeds today); never sets the OS clock; no background sync loop (M8 decision 18; field trigger: enlyzeam clock >1 min off exceeds the ±1 window)",
2026-06-21T04:47:53.9849308Z       "requiredStages": [
2026-06-21T04:47:53.9849390Z         "impl",
2026-06-21T04:47:53.9849482Z         "unit"
2026-06-21T04:47:53.9849567Z       ],
2026-06-21T04:47:53.9849662Z       "stages": {
2026-06-21T04:47:53.9849748Z         "doc": {
2026-06-21T04:47:53.9849862Z           "complete": false,
2026-06-21T04:47:53.9849957Z           "evidence": []
2026-06-21T04:47:53.9850082Z         },
2026-06-21T04:47:53.9850158Z         "impl": {
2026-06-21T04:47:53.9850248Z           "complete": true,
2026-06-21T04:47:53.9850339Z           "evidence": [
2026-06-21T04:47:53.9850421Z             {
2026-06-21T04:47:53.9850554Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T04:47:53.9850649Z               "line": 577
2026-06-21T04:47:53.9850731Z             },
2026-06-21T04:47:53.9850816Z             {
2026-06-21T04:47:53.9850950Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T04:47:53.9851046Z               "line": 22
2026-06-21T04:47:53.9851130Z             },
2026-06-21T04:47:53.9851212Z             {
2026-06-21T04:47:53.9851341Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T04:47:53.9851422Z               "line": 76
2026-06-21T04:47:53.9851515Z             },
2026-06-21T04:47:53.9851596Z             {
2026-06-21T04:47:53.9851731Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T04:47:53.9851821Z               "line": 127
2026-06-21T04:47:53.9851906Z             }
2026-06-21T04:47:53.9851998Z           ]
2026-06-21T04:47:53.9852084Z         },
2026-06-21T04:47:53.9852163Z         "int": {
2026-06-21T04:47:53.9852260Z           "complete": false,
2026-06-21T04:47:53.9852346Z           "evidence": []
2026-06-21T04:47:53.9852427Z         },
2026-06-21T04:47:53.9852516Z         "unit": {
2026-06-21T04:47:53.9852613Z           "complete": true,
2026-06-21T04:47:53.9852703Z           "evidence": [
2026-06-21T04:47:53.9852789Z             {
2026-06-21T04:47:53.9852914Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T04:47:53.9852999Z               "line": 183
2026-06-21T04:47:53.9853080Z             },
2026-06-21T04:47:53.9853170Z             {
2026-06-21T04:47:53.9853418Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T04:47:53.9853504Z               "line": 195
2026-06-21T04:47:53.9853615Z             },
2026-06-21T04:47:53.9853694Z             {
2026-06-21T04:47:53.9853826Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T04:47:53.9853913Z               "line": 211
2026-06-21T04:47:53.9853993Z             },
2026-06-21T04:47:53.9854102Z             {
2026-06-21T04:47:53.9854226Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T04:47:53.9854322Z               "line": 227
2026-06-21T04:47:53.9854401Z             }
2026-06-21T04:47:53.9854483Z           ]
2026-06-21T04:47:53.9854655Z         }
2026-06-21T04:47:53.9854740Z       }
2026-06-21T04:47:53.9854822Z     },
2026-06-21T04:47:53.9854903Z     {
2026-06-21T04:47:53.9855007Z       "id": "REQ-PICKER-1",
2026-06-21T04:47:53.9858638Z       "title": "The picker renders a FOUR-state endpoint status (extending the W2 online/offline duality): the list-item square AND a color-coded STATUS line at the top of the pick-existing right-side details both show — gray OFFLINE; green ONLINE (online + PTY-controllable spt-hosted, not controlled); amber 'ONLINE - HARNESS ONLY' (online but NOT broker-PTY-controllable = harness-hosted, no broker PTY seat — today mis-shows green); blue 'ONLINE + CONTROLLED' (online + driven_by.is_some()). Derived on EndpointRow from {offline | controllable | driven_by} with precedence offline→gray, else driven_by→blue, else !controllable→amber, else green (driven_by outranks harness-only; mutually exclusive in practice — a harness-only endpoint has no broker PTY to control). The controllable discriminator is a NEW InfoJson.controllable: Option<bool> (serde-default, N-1-safe), stamped at the establish seam — cmd_listen (harness-hosted relay, no broker PTY) → Some(false); cmd_bind live_agent (spt-hosted broker PTY) → Some(true); absent → not-controllable (amber) default (harness-hosted is the common mis-reported case; one bind self-corrects). Store-projection-only (no live daemon query — doyle ruling). (v0.10.0)",
2026-06-21T04:47:53.9858771Z       "requiredStages": [
2026-06-21T04:47:53.9858852Z         "impl",
2026-06-21T04:47:53.9858933Z         "unit"
2026-06-21T04:47:53.9859086Z       ],
2026-06-21T04:47:53.9859166Z       "stages": {
2026-06-21T04:47:53.9859251Z         "doc": {
2026-06-21T04:47:53.9859352Z           "complete": false,
2026-06-21T04:47:53.9859436Z           "evidence": []
2026-06-21T04:47:53.9859521Z         },
2026-06-21T04:47:53.9859607Z         "impl": {
2026-06-21T04:47:53.9859693Z           "complete": true,
2026-06-21T04:47:53.9859774Z           "evidence": [
2026-06-21T04:47:53.9859859Z             {
2026-06-21T04:47:53.9859984Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:53.9860075Z               "line": 248
2026-06-21T04:47:53.9860160Z             },
2026-06-21T04:47:53.9860285Z             {
2026-06-21T04:47:53.9860399Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T04:47:53.9860494Z               "line": 263
2026-06-21T04:47:53.9860580Z             }
2026-06-21T04:47:53.9860656Z           ]
2026-06-21T04:47:53.9860742Z         },
2026-06-21T04:47:53.9860827Z         "int": {
2026-06-21T04:47:53.9860919Z           "complete": false,
2026-06-21T04:47:53.9861004Z           "evidence": []
2026-06-21T04:47:53.9861095Z         },
2026-06-21T04:47:53.9861185Z         "unit": {
2026-06-21T04:47:53.9861281Z           "complete": true,
2026-06-21T04:47:53.9861366Z           "evidence": [
2026-06-21T04:47:53.9861447Z             {
2026-06-21T04:47:53.9861568Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T04:47:53.9861662Z               "line": 476
2026-06-21T04:47:53.9861748Z             },
2026-06-21T04:47:53.9861825Z             {
2026-06-21T04:47:53.9861944Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:53.9862028Z               "line": 753
2026-06-21T04:47:53.9862113Z             },
2026-06-21T04:47:53.9862200Z             {
2026-06-21T04:47:53.9862418Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T04:47:53.9862515Z               "line": 886
2026-06-21T04:47:53.9862592Z             },
2026-06-21T04:47:53.9862682Z             {
2026-06-21T04:47:53.9862796Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T04:47:53.9862882Z               "line": 455
2026-06-21T04:47:53.9862968Z             }
2026-06-21T04:47:53.9863053Z           ]
2026-06-21T04:47:53.9863134Z         }
2026-06-21T04:47:53.9863221Z       }
2026-06-21T04:47:53.9863306Z     },
2026-06-21T04:47:53.9863391Z     {
2026-06-21T04:47:53.9863488Z       "id": "REQ-PICKER-2",
2026-06-21T04:47:53.9865525Z       "title": "The picker's project-history loader reads the git-backed context store, not the bare working tree: data.rs project_history_for enumerates an endpoint's projects via the BranchStore branch set (the context store keeps per-project context in git branches — contextstore::project_branch(project_id), checked out to projects/<project>/<id>/ only on-demand) instead of raw std::fs::read_dir over the empty working tree (which returned empty for ALL rows incl wall-a — the operator bug). Ordered newest→oldest by branch commit recency; degrades to empty (informational pane), never fails. (v0.10.0)",
2026-06-21T04:47:53.9865639Z       "requiredStages": [
2026-06-21T04:47:53.9865726Z         "impl",
2026-06-21T04:47:53.9865820Z         "unit"
2026-06-21T04:47:53.9865906Z       ],
2026-06-21T04:47:53.9865996Z       "stages": {
2026-06-21T04:47:53.9866083Z         "doc": {
2026-06-21T04:47:53.9866183Z           "complete": false,
2026-06-21T04:47:53.9866273Z           "evidence": []
2026-06-21T04:47:53.9866360Z         },
2026-06-21T04:47:53.9866441Z         "impl": {
2026-06-21T04:47:53.9866536Z           "complete": true,
2026-06-21T04:47:53.9866617Z           "evidence": [
2026-06-21T04:47:53.9866694Z             {
2026-06-21T04:47:53.9866840Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T04:47:53.9866927Z               "line": 183
2026-06-21T04:47:53.9867014Z             },
2026-06-21T04:47:53.9867094Z             {
2026-06-21T04:47:53.9867207Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T04:47:53.9867293Z               "line": 296
2026-06-21T04:47:53.9867369Z             }
2026-06-21T04:47:53.9867448Z           ]
2026-06-21T04:47:53.9867538Z         },
2026-06-21T04:47:53.9867615Z         "int": {
2026-06-21T04:47:53.9867715Z           "complete": false,
2026-06-21T04:47:53.9867805Z           "evidence": []
2026-06-21T04:47:53.9867891Z         },
2026-06-21T04:47:53.9867978Z         "unit": {
2026-06-21T04:47:53.9868078Z           "complete": true,
2026-06-21T04:47:53.9868167Z           "evidence": [
2026-06-21T04:47:53.9868254Z             {
2026-06-21T04:47:53.9868387Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T04:47:53.9868477Z               "line": 655
2026-06-21T04:47:53.9868568Z             }
2026-06-21T04:47:53.9868650Z           ]
2026-06-21T04:47:53.9868735Z         }
2026-06-21T04:47:53.9868821Z       }
2026-06-21T04:47:53.9868903Z     },
2026-06-21T04:47:53.9869050Z     {
2026-06-21T04:47:53.9869150Z       "id": "REQ-PICKER-3",
2026-06-21T04:47:53.9871645Z       "title": "A self-owned subnet row reconciles its status to the LIVE roster: a Subnet-category row whose endpoint_id overlaps a local (is_local) roster id is self-owned (this node hosts it), so its status square is OVERRIDDEN with the live roster status — the WAN registry snapshot (wansend::load_snapshots) is a periodically-advertised, independently-stale projection, while the local roster (p.alive) is ground truth for an endpoint this node hosts. One status square per endpoint (CONTEXT.md:348-350 — nothing licenses opposite squares for one endpoint across its Local vs Subnet listings). A reconcile pass in data.rs after the local_rows + subnet_rows gather; BOTH category listings are preserved (Local + Subnet are legitimately distinct views — you are in your own subnet), only the STATUS is unified. (v0.10.0)",
2026-06-21T04:47:53.9871865Z       "requiredStages": [
2026-06-21T04:47:53.9871960Z         "impl",
2026-06-21T04:47:53.9872045Z         "unit"
2026-06-21T04:47:53.9872128Z       ],
2026-06-21T04:47:53.9872217Z       "stages": {
2026-06-21T04:47:53.9872303Z         "doc": {
2026-06-21T04:47:53.9872390Z           "complete": false,
2026-06-21T04:47:53.9872490Z           "evidence": []
2026-06-21T04:47:53.9872570Z         },
2026-06-21T04:47:53.9872655Z         "impl": {
2026-06-21T04:47:53.9872750Z           "complete": true,
2026-06-21T04:47:53.9872837Z           "evidence": [
2026-06-21T04:47:53.9872927Z             {
2026-06-21T04:47:53.9873046Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T04:47:53.9873228Z               "line": 124
2026-06-21T04:47:53.9873312Z             }
2026-06-21T04:47:53.9873395Z           ]
2026-06-21T04:47:53.9873480Z         },
2026-06-21T04:47:53.9873566Z         "int": {
2026-06-21T04:47:53.9873651Z           "complete": false,
2026-06-21T04:47:53.9873738Z           "evidence": []
2026-06-21T04:47:53.9873819Z         },
2026-06-21T04:47:53.9873909Z         "unit": {
2026-06-21T04:47:53.9874000Z           "complete": true,
2026-06-21T04:47:53.9874082Z           "evidence": [
2026-06-21T04:47:53.9874171Z             {
2026-06-21T04:47:53.9874280Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T04:47:53.9874373Z               "line": 369
2026-06-21T04:47:53.9874458Z             }
2026-06-21T04:47:53.9874543Z           ]
2026-06-21T04:47:53.9874629Z         }
2026-06-21T04:47:53.9874716Z       }
2026-06-21T04:47:53.9874800Z     },
2026-06-21T04:47:53.9874890Z     {
2026-06-21T04:47:53.9874986Z       "id": "REQ-PICKER-4",
2026-06-21T04:47:53.9876934Z       "title": "The picker's Subnet category renders the canonical node LABEL, not bare key-hex: a subnet row's node renders as 'LABEL (keyprefix…)' (e.g. 'HFENDULEAM (bcead52b…)') per CONTEXT.md:650 + Instance.node_label, NOT the raw node key-hex (SPT_DEV:14efb80cb… — a picker-only regression because resource_projection→ResourceRow drops node_label, so data.rs subnet_rows uses the raw row.node). Thread node_label into the picker subnet path (ResourceRow gains node_label, or subnet_rows looks it up via the registry's node_labels) and REUSE the one canonical render (format!(\"{l} ({}…)\", key_prefix) — cli.rs / wansend.rs), never a re-implementation. (v0.10.0)",
2026-06-21T04:47:53.9877048Z       "requiredStages": [
2026-06-21T04:47:53.9877124Z         "impl",
2026-06-21T04:47:53.9877216Z         "unit"
2026-06-21T04:47:53.9877297Z       ],
2026-06-21T04:47:53.9877377Z       "stages": {
2026-06-21T04:47:53.9877463Z         "doc": {
2026-06-21T04:47:53.9877560Z           "complete": false,
2026-06-21T04:47:53.9877659Z           "evidence": []
2026-06-21T04:47:53.9877738Z         },
2026-06-21T04:47:53.9877833Z         "impl": {
2026-06-21T04:47:53.9877934Z           "complete": true,
2026-06-21T04:47:53.9878018Z           "evidence": [
2026-06-21T04:47:53.9878108Z             {
2026-06-21T04:47:53.9878247Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9878338Z               "line": 353
2026-06-21T04:47:53.9878422Z             },
2026-06-21T04:47:53.9878509Z             {
2026-06-21T04:47:53.9878623Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T04:47:53.9878699Z               "line": 105
2026-06-21T04:47:53.9878780Z             }
2026-06-21T04:47:53.9878867Z           ]
2026-06-21T04:47:53.9879033Z         },
2026-06-21T04:47:53.9879104Z         "int": {
2026-06-21T04:47:53.9879201Z           "complete": false,
2026-06-21T04:47:53.9879295Z           "evidence": []
2026-06-21T04:47:53.9879376Z         },
2026-06-21T04:47:53.9879468Z         "unit": {
2026-06-21T04:47:53.9879549Z           "complete": true,
2026-06-21T04:47:53.9879633Z           "evidence": [
2026-06-21T04:47:53.9879720Z             {
2026-06-21T04:47:53.9879850Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9879938Z               "line": 1246
2026-06-21T04:47:53.9880121Z             },
2026-06-21T04:47:53.9880197Z             {
2026-06-21T04:47:53.9880310Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T04:47:53.9880400Z               "line": 427
2026-06-21T04:47:53.9880486Z             }
2026-06-21T04:47:53.9880580Z           ]
2026-06-21T04:47:53.9880670Z         }
2026-06-21T04:47:53.9880756Z       }
2026-06-21T04:47:53.9880837Z     },
2026-06-21T04:47:53.9880913Z     {
2026-06-21T04:47:53.9881013Z       "id": "REQ-PICKER-5",
2026-06-21T04:47:53.9884121Z       "title": "`spt endpoint list` (bare/subnet view) renders an ALIGNED table with canonical node labels: cmd_endpoint_list prints subnet rows with `\\t` TAB separators (cli.rs:~1651-1662) so variable-width endpoint_ids snap fields to different tab-stops → a RAGGED status column (operator screenshot: X/help statuses misaligned vs rt-*/sptc-*/wall-a); and it calls the node renderer with no label → bare key-hex for every row (SAME ResourceRow-drops-node_label root as REQ-PICKER-4). FIX: max-width per-column padding (mirror render_node_rows' pad, pad by char count not byte len — '…' is multibyte) replacing the tabs, and render the node via the shared node_label_display now that ResourceRow carries node_label (REQ-PICKER-4). Extract a pure row-formatter seam so the alignment+label is unit-testable. ALSO: the bare list is the SUBNET view (a just-run LOCAL perch is invisible cross-subnet until the next advertise tick), so emit a `--local` hint line so a freshly-run endpoint isn't perceived as lost. (v0.10.0; operator-flagged + doyle dispatch 2026-06-17)",
2026-06-21T04:47:53.9884350Z       "requiredStages": [
2026-06-21T04:47:53.9884450Z         "impl",
2026-06-21T04:47:53.9884540Z         "unit"
2026-06-21T04:47:53.9884628Z       ],
2026-06-21T04:47:53.9884712Z       "stages": {
2026-06-21T04:47:53.9884793Z         "doc": {
2026-06-21T04:47:53.9884894Z           "complete": false,
2026-06-21T04:47:53.9884985Z           "evidence": []
2026-06-21T04:47:53.9885070Z         },
2026-06-21T04:47:53.9885160Z         "impl": {
2026-06-21T04:47:53.9885253Z           "complete": true,
2026-06-21T04:47:53.9885338Z           "evidence": [
2026-06-21T04:47:53.9885422Z             {
2026-06-21T04:47:53.9885536Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9885617Z               "line": 1802
2026-06-21T04:47:53.9885701Z             }
2026-06-21T04:47:53.9885791Z           ]
2026-06-21T04:47:53.9885877Z         },
2026-06-21T04:47:53.9885969Z         "int": {
2026-06-21T04:47:53.9886064Z           "complete": false,
2026-06-21T04:47:53.9886163Z           "evidence": []
2026-06-21T04:47:53.9886245Z         },
2026-06-21T04:47:53.9886326Z         "unit": {
2026-06-21T04:47:53.9886425Z           "complete": true,
2026-06-21T04:47:53.9886507Z           "evidence": [
2026-06-21T04:47:53.9886589Z             {
2026-06-21T04:47:53.9886688Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:53.9886773Z               "line": 7526
2026-06-21T04:47:53.9886860Z             }
2026-06-21T04:47:53.9886946Z           ]
2026-06-21T04:47:53.9887027Z         }
2026-06-21T04:47:53.9887112Z       }
2026-06-21T04:47:53.9887199Z     },
2026-06-21T04:47:53.9887279Z     {
2026-06-21T04:47:53.9887403Z       "id": "REQ-PICKER-ADAPTER-DESCRIPTION",
2026-06-21T04:47:53.9888807Z       "title": "The Create-new adapter-CHOICE screen of `spt endpoint run`'s picker shows a right-hand Description panel (like the Pick-existing endpoint picker's two-pane) surfacing per-adapter detail: install date, last-updated, adapter TYPE / the endpoint types it hosts, and the adapter description — so the user can see WHAT each adapter is before choosing it (today the selector lists bare names). DEFERRED fast-follow to v0.12.0 (operator 2026-06-18). (post-v0.12.0)",
2026-06-21T04:47:53.9888916Z       "requiredStages": [],
2026-06-21T04:47:53.9889084Z       "stages": {
2026-06-21T04:47:53.9889169Z         "doc": {
2026-06-21T04:47:53.9889269Z           "complete": false,
2026-06-21T04:47:53.9889359Z           "evidence": []
2026-06-21T04:47:53.9889546Z         },
2026-06-21T04:47:53.9889640Z         "impl": {
2026-06-21T04:47:53.9889732Z           "complete": false,
2026-06-21T04:47:53.9889822Z           "evidence": []
2026-06-21T04:47:53.9889913Z         },
2026-06-21T04:47:53.9889998Z         "int": {
2026-06-21T04:47:53.9890085Z           "complete": false,
2026-06-21T04:47:53.9890179Z           "evidence": []
2026-06-21T04:47:53.9890265Z         },
2026-06-21T04:47:53.9890353Z         "unit": {
2026-06-21T04:47:53.9890457Z           "complete": false,
2026-06-21T04:47:53.9890542Z           "evidence": []
2026-06-21T04:47:53.9890633Z         }
2026-06-21T04:47:53.9890720Z       }
2026-06-21T04:47:53.9890904Z     },
2026-06-21T04:47:53.9890999Z     {
2026-06-21T04:47:53.9891108Z       "id": "REQ-PICKER-HISTORY-FRESH",
2026-06-21T04:47:53.9892246Z       "title": "The `spt endpoint run` picker shows project history for FRESH endpoints (operator-raised v0.12.0 real-harness finding). Symptom: a fresh endpoint shows no project history in the picker. ROOT TBD — investigate the project-history loader (v0.10.0 PICKER-2, picker/data.rs) before fixing: distinguish a real loader bug from 'fresh = no history yet' semantics. (v0.12.1)",
2026-06-21T04:47:53.9892351Z       "requiredStages": [
2026-06-21T04:47:53.9892442Z         "impl",
2026-06-21T04:47:53.9892527Z         "unit"
2026-06-21T04:47:53.9892614Z       ],
2026-06-21T04:47:53.9892694Z       "stages": {
2026-06-21T04:47:53.9892780Z         "doc": {
2026-06-21T04:47:53.9892870Z           "complete": false,
2026-06-21T04:47:53.9892962Z           "evidence": []
2026-06-21T04:47:53.9893051Z         },
2026-06-21T04:47:53.9893147Z         "impl": {
2026-06-21T04:47:53.9893248Z           "complete": true,
2026-06-21T04:47:53.9893347Z           "evidence": [
2026-06-21T04:47:53.9893428Z             {
2026-06-21T04:47:53.9893553Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T04:47:53.9893634Z               "line": 275
2026-06-21T04:47:53.9893718Z             }
2026-06-21T04:47:53.9893813Z           ]
2026-06-21T04:47:53.9893895Z         },
2026-06-21T04:47:53.9893982Z         "int": {
2026-06-21T04:47:53.9894075Z           "complete": false,
2026-06-21T04:47:53.9894166Z           "evidence": []
2026-06-21T04:47:53.9894243Z         },
2026-06-21T04:47:53.9894324Z         "unit": {
2026-06-21T04:47:53.9894424Z           "complete": true,
2026-06-21T04:47:53.9894510Z           "evidence": [
2026-06-21T04:47:53.9894596Z             {
2026-06-21T04:47:53.9894714Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T04:47:53.9894801Z               "line": 400
2026-06-21T04:47:53.9894883Z             }
2026-06-21T04:47:53.9894977Z           ]
2026-06-21T04:47:53.9895062Z         }
2026-06-21T04:47:53.9895144Z       }
2026-06-21T04:47:53.9895230Z     },
2026-06-21T04:47:53.9895320Z     {
2026-06-21T04:47:53.9895430Z       "id": "REQ-PICKER-ONLINE-ACTION",
2026-06-21T04:47:53.9896990Z       "title": "The `spt endpoint run` picker shows the correct action for an ALREADY-ONLINE endpoint — Attach, NOT 'Start now' (operator-raised v0.12.0 real-harness finding). Symptom: the picker offers 'Start now' for endpoints that are already online. ROOT TBD — investigate the status→action mapping (v0.10.0 PICKER-1 four-state status, picker/model.rs): is it reading live/online state correctly, or rendering stale/wedged broker state (i.e. partly a symptom of the broker wedge / status=online latch)? Fix so online → Attach. (v0.12.1)",
2026-06-21T04:47:53.9897106Z       "requiredStages": [
2026-06-21T04:47:53.9897196Z         "impl",
2026-06-21T04:47:53.9897286Z         "unit"
2026-06-21T04:47:53.9897377Z       ],
2026-06-21T04:47:53.9897472Z       "stages": {
2026-06-21T04:47:53.9897563Z         "doc": {
2026-06-21T04:47:53.9897663Z           "complete": false,
2026-06-21T04:47:53.9897754Z           "evidence": []
2026-06-21T04:47:53.9897849Z         },
2026-06-21T04:47:53.9897935Z         "impl": {
2026-06-21T04:47:53.9898021Z           "complete": true,
2026-06-21T04:47:53.9898112Z           "evidence": [
2026-06-21T04:47:53.9898287Z             {
2026-06-21T04:47:53.9898403Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T04:47:53.9898487Z               "line": 654
2026-06-21T04:47:53.9898569Z             }
2026-06-21T04:47:53.9898655Z           ]
2026-06-21T04:47:53.9898742Z         },
2026-06-21T04:47:53.9898831Z         "int": {
2026-06-21T04:47:53.9898925Z           "complete": false,
2026-06-21T04:47:53.9899091Z           "evidence": []
2026-06-21T04:47:53.9899176Z         },
2026-06-21T04:47:53.9899266Z         "unit": {
2026-06-21T04:47:53.9899352Z           "complete": true,
2026-06-21T04:47:53.9899444Z           "evidence": [
2026-06-21T04:47:53.9899639Z             {
2026-06-21T04:47:53.9899763Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T04:47:53.9899857Z               "line": 1078
2026-06-21T04:47:53.9899939Z             },
2026-06-21T04:47:53.9900025Z             {
2026-06-21T04:47:53.9900139Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T04:47:53.9900230Z               "line": 1092
2026-06-21T04:47:53.9900316Z             }
2026-06-21T04:47:53.9900401Z           ]
2026-06-21T04:47:53.9900487Z         }
2026-06-21T04:47:53.9900573Z       }
2026-06-21T04:47:53.9900659Z     },
2026-06-21T04:47:53.9900735Z     {
2026-06-21T04:47:53.9900840Z       "id": "REQ-PICKER-UX-V013",
2026-06-21T04:47:53.9902476Z       "title": "`spt endpoint run` picker UX (v0.13.0 operator dogfooding): (1) SKIP the first screen — open directly on 'Pick existing'; `n` jumps to 'Create new'. (2) AUTO-ATTACH after both Start-new AND Resume-from-history (both currently don't attach and show no stdout); add an `h` shortcut to run headless (no attach). (3) 'controlled by' shows the node NAME (node_label_display), not the raw hex. (4) Clean up Start-new output — drop the Rust `pid=Some(142748)` leak and the 'harness binds its perch on startup' internals; user-friendly, not a process log. (v0.13.0)",
2026-06-21T04:47:53.9902582Z       "requiredStages": [],
2026-06-21T04:47:53.9902682Z       "stages": {
2026-06-21T04:47:53.9902772Z         "doc": {
2026-06-21T04:47:53.9902869Z           "complete": false,
2026-06-21T04:47:53.9902953Z           "evidence": []
2026-06-21T04:47:53.9903039Z         },
2026-06-21T04:47:53.9903135Z         "impl": {
2026-06-21T04:47:53.9903217Z           "complete": false,
2026-06-21T04:47:53.9903312Z           "evidence": []
2026-06-21T04:47:53.9903397Z         },
2026-06-21T04:47:53.9903479Z         "int": {
2026-06-21T04:47:53.9903583Z           "complete": false,
2026-06-21T04:47:53.9903674Z           "evidence": []
2026-06-21T04:47:53.9903760Z         },
2026-06-21T04:47:53.9903842Z         "unit": {
2026-06-21T04:47:53.9903949Z           "complete": false,
2026-06-21T04:47:53.9904046Z           "evidence": []
2026-06-21T04:47:53.9904128Z         }
2026-06-21T04:47:53.9904218Z       }
2026-06-21T04:47:53.9904292Z     },
2026-06-21T04:47:53.9904382Z     {
2026-06-21T04:47:53.9904479Z       "id": "REQ-PRES-1",
2026-06-21T04:47:53.9905832Z       "title": "Presence resolution: the presence datum (last_active_node, last_active_endpoint, ts) gossiped subnet-wide via the agent-interaction heartbeat (rides registry distribution, visibility-gated) + one first-class most-recently-active resolution API consumed by notif first-fire, update-consent delivery, consent escalation, and shell wake resolution (M5 scope decision 1: resolution only — the PresenceChannel endpoint stays deferred)",
2026-06-21T04:47:53.9905933Z       "requiredStages": [
2026-06-21T04:47:53.9906024Z         "impl",
2026-06-21T04:47:53.9906119Z         "unit",
2026-06-21T04:47:53.9906204Z         "int"
2026-06-21T04:47:53.9906295Z       ],
2026-06-21T04:47:53.9906397Z       "stages": {
2026-06-21T04:47:53.9906485Z         "doc": {
2026-06-21T04:47:53.9906575Z           "complete": true,
2026-06-21T04:47:53.9906670Z           "evidence": [
2026-06-21T04:47:53.9906761Z             {
2026-06-21T04:47:53.9906869Z               "path": "docs/DEFERRED.md",
2026-06-21T04:47:53.9906964Z               "line": 11
2026-06-21T04:47:53.9907164Z             }
2026-06-21T04:47:53.9907236Z           ]
2026-06-21T04:47:53.9907327Z         },
2026-06-21T04:47:53.9907413Z         "impl": {
2026-06-21T04:47:53.9907512Z           "complete": true,
2026-06-21T04:47:53.9907598Z           "evidence": [
2026-06-21T04:47:53.9907680Z             {
2026-06-21T04:47:53.9907817Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T04:47:53.9907903Z               "line": 515
2026-06-21T04:47:53.9907991Z             },
2026-06-21T04:47:53.9908076Z             {
2026-06-21T04:47:53.9908208Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T04:47:53.9908371Z               "line": 567
2026-06-21T04:47:53.9908456Z             },
2026-06-21T04:47:53.9908547Z             {
2026-06-21T04:47:53.9908662Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T04:47:53.9908752Z               "line": 188
2026-06-21T04:47:53.9908838Z             },
2026-06-21T04:47:53.9908920Z             {
2026-06-21T04:47:53.9909124Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T04:47:53.9909220Z               "line": 214
2026-06-21T04:47:53.9909297Z             },
2026-06-21T04:47:53.9909381Z             {
2026-06-21T04:47:53.9909509Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T04:47:53.9909600Z               "line": 28
2026-06-21T04:47:53.9909689Z             },
2026-06-21T04:47:53.9909774Z             {
2026-06-21T04:47:53.9909903Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T04:47:53.9909999Z               "line": 105
2026-06-21T04:47:53.9910084Z             },
2026-06-21T04:47:53.9910170Z             {
2026-06-21T04:47:53.9910294Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T04:47:53.9910379Z               "line": 161
2026-06-21T04:47:53.9910465Z             },
2026-06-21T04:47:53.9910547Z             {
2026-06-21T04:47:53.9910671Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T04:47:53.9910751Z               "line": 180
2026-06-21T04:47:53.9910833Z             },
2026-06-21T04:47:53.9910914Z             {
2026-06-21T04:47:53.9911057Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.9911143Z               "line": 421
2026-06-21T04:47:53.9911239Z             },
2026-06-21T04:47:53.9911328Z             {
2026-06-21T04:47:53.9911453Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T04:47:53.9911544Z               "line": 289
2026-06-21T04:47:53.9911629Z             },
2026-06-21T04:47:53.9911729Z             {
2026-06-21T04:47:53.9911845Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T04:47:53.9911934Z               "line": 336
2026-06-21T04:47:53.9912014Z             },
2026-06-21T04:47:53.9912100Z             {
2026-06-21T04:47:53.9912223Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T04:47:53.9912317Z               "line": 362
2026-06-21T04:47:53.9912407Z             },
2026-06-21T04:47:53.9912494Z             {
2026-06-21T04:47:53.9912618Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9912708Z               "line": 100
2026-06-21T04:47:53.9912790Z             }
2026-06-21T04:47:53.9912880Z           ]
2026-06-21T04:47:53.9912960Z         },
2026-06-21T04:47:53.9913056Z         "int": {
2026-06-21T04:47:53.9913157Z           "complete": true,
2026-06-21T04:47:53.9913243Z           "evidence": [
2026-06-21T04:47:53.9913322Z             {
2026-06-21T04:47:53.9913457Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T04:47:53.9913552Z               "line": 563
2026-06-21T04:47:53.9913633Z             },
2026-06-21T04:47:53.9913720Z             {
2026-06-21T04:47:53.9913857Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T04:47:53.9913938Z               "line": 747
2026-06-21T04:47:53.9914030Z             },
2026-06-21T04:47:53.9914115Z             {
2026-06-21T04:47:53.9914234Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T04:47:53.9914430Z               "line": 1165
2026-06-21T04:47:53.9914514Z             }
2026-06-21T04:47:53.9914606Z           ]
2026-06-21T04:47:53.9914693Z         },
2026-06-21T04:47:53.9914783Z         "unit": {
2026-06-21T04:47:53.9914872Z           "complete": true,
2026-06-21T04:47:53.9914957Z           "evidence": [
2026-06-21T04:47:53.9915039Z             {
2026-06-21T04:47:53.9915167Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T04:47:53.9915253Z               "line": 674
2026-06-21T04:47:53.9915339Z             },
2026-06-21T04:47:53.9915420Z             {
2026-06-21T04:47:53.9915539Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T04:47:53.9915744Z               "line": 238
2026-06-21T04:47:53.9915825Z             },
2026-06-21T04:47:53.9915906Z             {
2026-06-21T04:47:53.9916036Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T04:47:53.9916126Z               "line": 269
2026-06-21T04:47:53.9916216Z             },
2026-06-21T04:47:53.9916303Z             {
2026-06-21T04:47:53.9916431Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T04:47:53.9916521Z               "line": 305
2026-06-21T04:47:53.9916608Z             },
2026-06-21T04:47:53.9916703Z             {
2026-06-21T04:47:53.9916817Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T04:47:53.9916914Z               "line": 336
2026-06-21T04:47:53.9916999Z             },
2026-06-21T04:47:53.9917088Z             {
2026-06-21T04:47:53.9917217Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:53.9917307Z               "line": 1217
2026-06-21T04:47:53.9917395Z             },
2026-06-21T04:47:53.9917481Z             {
2026-06-21T04:47:53.9917611Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:53.9917706Z               "line": 1163
2026-06-21T04:47:53.9917791Z             }
2026-06-21T04:47:53.9917877Z           ]
2026-06-21T04:47:53.9917973Z         }
2026-06-21T04:47:53.9918067Z       }
2026-06-21T04:47:53.9918153Z     },
2026-06-21T04:47:53.9918236Z     {
2026-06-21T04:47:53.9918326Z       "id": "REQ-RC-1",
2026-06-21T04:47:53.9920459Z       "title": "`spt rc <id>` — user CLI attaching a local terminal to a broker-held PTY, reusing the cross-node attach machinery (attach.rs request_attach → send_attach_input pump, spt-net AttachRecord codec); local attach is the degenerate single-node case of the cross-node path (rides REQ-TERM-3 byte-stream streaming). Read-only `--view` (watch, no stdin forwarded). Clean detach that does NOT terminate the broker-held session (KNOWN-HAZARDS: PTY ownership stays with the broker; no termination on detach). Explicit detach keybind that cannot collide with harness passthrough input (legacy capsule used a ctrl-b prefix); documented. ConPTY DSR auto-answer in the attach reader (hazard 5.5).",
2026-06-21T04:47:53.9920578Z       "requiredStages": [
2026-06-21T04:47:53.9920663Z         "impl",
2026-06-21T04:47:53.9920749Z         "unit",
2026-06-21T04:47:53.9920831Z         "int"
2026-06-21T04:47:53.9920916Z       ],
2026-06-21T04:47:53.9921001Z       "stages": {
2026-06-21T04:47:53.9921094Z         "doc": {
2026-06-21T04:47:53.9921193Z           "complete": false,
2026-06-21T04:47:53.9921273Z           "evidence": []
2026-06-21T04:47:53.9921360Z         },
2026-06-21T04:47:53.9921446Z         "impl": {
2026-06-21T04:47:53.9921536Z           "complete": true,
2026-06-21T04:47:53.9921636Z           "evidence": [
2026-06-21T04:47:53.9921708Z             {
2026-06-21T04:47:53.9921836Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T04:47:53.9921917Z               "line": 944
2026-06-21T04:47:53.9922004Z             },
2026-06-21T04:47:53.9922094Z             {
2026-06-21T04:47:53.9922227Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.9922324Z               "line": 1926
2026-06-21T04:47:53.9922405Z             },
2026-06-21T04:47:53.9922494Z             {
2026-06-21T04:47:53.9922727Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T04:47:53.9922820Z               "line": 967
2026-06-21T04:47:53.9922910Z             },
2026-06-21T04:47:53.9922996Z             {
2026-06-21T04:47:53.9923117Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T04:47:53.9923201Z               "line": 1001
2026-06-21T04:47:53.9923287Z             },
2026-06-21T04:47:53.9923379Z             {
2026-06-21T04:47:53.9923497Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.9926462Z               "line": 22
2026-06-21T04:47:53.9926572Z             },
2026-06-21T04:47:53.9926667Z             {
2026-06-21T04:47:53.9926791Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.9927020Z               "line": 701
2026-06-21T04:47:53.9927106Z             }
2026-06-21T04:47:53.9927183Z           ]
2026-06-21T04:47:53.9927273Z         },
2026-06-21T04:47:53.9927363Z         "int": {
2026-06-21T04:47:53.9927464Z           "complete": true,
2026-06-21T04:47:53.9927555Z           "evidence": [
2026-06-21T04:47:53.9927634Z             {
2026-06-21T04:47:53.9927767Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T04:47:53.9927858Z               "line": 258
2026-06-21T04:47:53.9927942Z             },
2026-06-21T04:47:53.9928018Z             {
2026-06-21T04:47:53.9928147Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T04:47:53.9928234Z               "line": 285
2026-06-21T04:47:53.9928322Z             },
2026-06-21T04:47:53.9928404Z             {
2026-06-21T04:47:53.9928533Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T04:47:53.9928623Z               "line": 413
2026-06-21T04:47:53.9928709Z             }
2026-06-21T04:47:53.9928786Z           ]
2026-06-21T04:47:53.9928862Z         },
2026-06-21T04:47:53.9929028Z         "unit": {
2026-06-21T04:47:53.9929111Z           "complete": true,
2026-06-21T04:47:53.9929205Z           "evidence": [
2026-06-21T04:47:53.9929290Z             {
2026-06-21T04:47:53.9929425Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T04:47:53.9929519Z               "line": 1327
2026-06-21T04:47:53.9929605Z             },
2026-06-21T04:47:53.9929697Z             {
2026-06-21T04:47:53.9929802Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.9929892Z               "line": 1133
2026-06-21T04:47:53.9929978Z             },
2026-06-21T04:47:53.9930060Z             {
2026-06-21T04:47:53.9930163Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.9930249Z               "line": 1162
2026-06-21T04:47:53.9930336Z             },
2026-06-21T04:47:53.9930408Z             {
2026-06-21T04:47:53.9930516Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.9930615Z               "line": 1175
2026-06-21T04:47:53.9930701Z             }
2026-06-21T04:47:53.9930786Z           ]
2026-06-21T04:47:53.9930866Z         }
2026-06-21T04:47:53.9930951Z       }
2026-06-21T04:47:53.9931038Z     },
2026-06-21T04:47:53.9931119Z     {
2026-06-21T04:47:53.9931237Z       "id": "REQ-RC-KEY-VT-TRANSLATE",
2026-06-21T04:47:53.9937151Z       "title": "On Windows, `spt rc` translates CONSOLE KEY EVENTS to standard xterm VT so ALL keys reach the hosted harness — arrows/Home/End/PgUp/PgDn/Insert/Delete/F-keys, every modifier combo, Backspace/Ctrl+Backspace — not just the byte-emitting ones. ROOT (operator HITL, doyle /diagnose): `spt rc` reads raw STDIN BYTES (spawn_stdin_reader, std::io::stdin().read); on the Windows LEGACY console (no ENABLE_VIRTUAL_TERMINAL_INPUT) the special keys produce console KEY_EVENTs, NOT stdin bytes, so the byte-pump sees nothing → those keys are DEAD. Enabling ENABLE_VIRTUAL_TERMINAL_INPUT was rejected (W7 dc07c39): on Windows Terminal it yields harness-specific win32-input-mode + broke ctrl-b detach. FIX (agnostic, full fidelity): on Windows, replace the stdin byte-read with a crossterm EVENT source (crossterm 0.28 already a dep; the picker already reads events) and translate each KeyEvent → STANDARD xterm VT bytes via a PURE translate_key_event(KeyEvent)->Vec<u8> (copy a known-correct xterm table verbatim, ADR-0001 spirit), forwarded through the SAME rc pump — the harness receives ordinary xterm VT (harness-AGNOSTIC, no win32-input-mode). Press-only (drop Repeat/Release). Detach stays the ctrl-b+'d' PREFIX, event-sourced (doyle Option B): Ctrl+B arms; armed+plain-'d'⇒Detach; armed+Ctrl+B⇒emit literal 0x02; armed+other⇒0x02 then translate(other). Non-tty stdin (piped/tests) → FALL BACK to the byte-read path (keeps e2e byte-injection working). UNIX UNCHANGED (its raw-mode byte stream already delivers proper VT; cfg-split, zero Unix regression). SUPERSEDES the W7 normalize_key_byte swap on Windows — the translator emits 0x7f for Backspace and 0x08 for Ctrl+Backspace natively (REQ-HAZARD-RC-INPUT-KEY-ENCODING folded in). NO int (a live interactive console can't be driven in CI — HITL, REQ-RUN-PICKER/RC-1 precedent); the exhaustive non-vacuous translate_key_event mapping unit + the event-detach unit ARE the surface. (v0.13.0)",
2026-06-21T04:47:53.9937490Z       "requiredStages": [
2026-06-21T04:47:53.9937580Z         "doc",
2026-06-21T04:47:53.9937661Z         "impl",
2026-06-21T04:47:53.9937752Z         "unit"
2026-06-21T04:47:53.9937838Z       ],
2026-06-21T04:47:53.9937933Z       "stages": {
2026-06-21T04:47:53.9938019Z         "doc": {
2026-06-21T04:47:53.9938115Z           "complete": true,
2026-06-21T04:47:53.9938204Z           "evidence": [
2026-06-21T04:47:53.9938289Z             {
2026-06-21T04:47:53.9938394Z               "path": "CONTEXT.md",
2026-06-21T04:47:53.9938479Z               "line": 345
2026-06-21T04:47:53.9938559Z             },
2026-06-21T04:47:53.9938654Z             {
2026-06-21T04:47:53.9938769Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T04:47:53.9938868Z               "line": 440
2026-06-21T04:47:53.9939036Z             }
2026-06-21T04:47:53.9939122Z           ]
2026-06-21T04:47:53.9939211Z         },
2026-06-21T04:47:53.9939303Z         "impl": {
2026-06-21T04:47:53.9939403Z           "complete": true,
2026-06-21T04:47:53.9939493Z           "evidence": [
2026-06-21T04:47:53.9939584Z             {
2026-06-21T04:47:53.9939685Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.9939775Z               "line": 226
2026-06-21T04:47:53.9939846Z             },
2026-06-21T04:47:53.9939927Z             {
2026-06-21T04:47:53.9940028Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.9940114Z               "line": 285
2026-06-21T04:47:53.9940199Z             },
2026-06-21T04:47:53.9940281Z             {
2026-06-21T04:47:53.9940390Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.9940480Z               "line": 300
2026-06-21T04:47:53.9940572Z             },
2026-06-21T04:47:53.9940663Z             {
2026-06-21T04:47:53.9940766Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.9940862Z               "line": 315
2026-06-21T04:47:53.9940949Z             },
2026-06-21T04:47:53.9941029Z             {
2026-06-21T04:47:53.9941133Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.9941223Z               "line": 364
2026-06-21T04:47:53.9941309Z             }
2026-06-21T04:47:53.9941388Z           ]
2026-06-21T04:47:53.9941469Z         },
2026-06-21T04:47:53.9941555Z         "int": {
2026-06-21T04:47:53.9941651Z           "complete": false,
2026-06-21T04:47:53.9941745Z           "evidence": []
2026-06-21T04:47:53.9941835Z         },
2026-06-21T04:47:53.9941928Z         "unit": {
2026-06-21T04:47:53.9942023Z           "complete": true,
2026-06-21T04:47:53.9942103Z           "evidence": [
2026-06-21T04:47:53.9942189Z             {
2026-06-21T04:47:53.9942294Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.9942379Z               "line": 1190
2026-06-21T04:47:53.9942465Z             },
2026-06-21T04:47:53.9942547Z             {
2026-06-21T04:47:53.9942651Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.9942742Z               "line": 1305
2026-06-21T04:47:53.9942824Z             }
2026-06-21T04:47:53.9942910Z           ]
2026-06-21T04:47:53.9943095Z         }
2026-06-21T04:47:53.9943182Z       }
2026-06-21T04:47:53.9943266Z     },
2026-06-21T04:47:53.9943347Z     {
2026-06-21T04:47:53.9943454Z       "id": "REQ-RC-MOUSE-FORWARD",
2026-06-21T04:47:53.9947887Z       "title": "On Windows, `spt rc` must FORWARD scroll-wheel events to the harness when the harness has mouse reporting on. ROOT (operator HITL): P1's RawGuard EnableMouseCapture (added for right-click paste, REQ-RC-WIN-PASTE) makes Windows Terminal forward ALL mouse — including the scroll wheel — to rc instead of scrolling its own buffer, but the rc mouse handler dropped everything except right-button-down → scroll DIED (and WT's native scrollback is stolen by the capture). Operator ruling: keep mouse capture + right-click bracketed paste AND forward scroll to the harness. FIX (doyle design, cfg(windows), folds into the rc mouse handler): TRACK the harness's mouse-reporting mode by scanning its OUTPUT stream for the DECSET set/reset — ESC[?1000h/1002h/1003h (mouse on) + ESC[?1006h (SGR ext) and their ...l (off) — into a shared MouseMode{enabled,sgr} (pump writes from output, stdin reader reads); the scan survives a sequence SPLIT across output chunks (a bounded carry buffer). The mouse handler: right-button-DOWN -> bracketed clipboard paste (unchanged, REQ-RC-WIN-PASTE); ScrollUp/Down -> translate to an xterm SGR mouse report (ESC[<64;col+1;row+1M up / ESC[<65;..M down, 0-based crossterm -> 1-based xterm) and forward ONLY when enabled && sgr (else DROP — a legacy X10 report the harness may not parse is garbage); Moved/drag/left/middle -> DROP (scroll is the operator's need; click-forward risks garbage, no click-to-position). Unix UNCHANGED (no capture; the terminal scrolls natively). (v0.13.0)",
2026-06-21T04:47:53.9948111Z       "requiredStages": [
2026-06-21T04:47:53.9948197Z         "doc",
2026-06-21T04:47:53.9948275Z         "impl",
2026-06-21T04:47:53.9948360Z         "unit"
2026-06-21T04:47:53.9948454Z       ],
2026-06-21T04:47:53.9948541Z       "stages": {
2026-06-21T04:47:53.9948632Z         "doc": {
2026-06-21T04:47:53.9948731Z           "complete": true,
2026-06-21T04:47:53.9948811Z           "evidence": [
2026-06-21T04:47:53.9948892Z             {
2026-06-21T04:47:53.9949091Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T04:47:53.9949176Z               "line": 461
2026-06-21T04:47:53.9949258Z             }
2026-06-21T04:47:53.9949344Z           ]
2026-06-21T04:47:53.9949434Z         },
2026-06-21T04:47:53.9949515Z         "impl": {
2026-06-21T04:47:53.9949611Z           "complete": true,
2026-06-21T04:47:53.9949692Z           "evidence": [
2026-06-21T04:47:53.9949786Z             {
2026-06-21T04:47:53.9949887Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.9949987Z               "line": 421
2026-06-21T04:47:53.9950068Z             },
2026-06-21T04:47:53.9950149Z             {
2026-06-21T04:47:53.9950255Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.9950345Z               "line": 437
2026-06-21T04:47:53.9950439Z             }
2026-06-21T04:47:53.9950517Z           ]
2026-06-21T04:47:53.9950602Z         },
2026-06-21T04:47:53.9950688Z         "int": {
2026-06-21T04:47:53.9950783Z           "complete": false,
2026-06-21T04:47:53.9950884Z           "evidence": []
2026-06-21T04:47:53.9950960Z         },
2026-06-21T04:47:53.9951045Z         "unit": {
2026-06-21T04:47:53.9951142Z           "complete": true,
2026-06-21T04:47:53.9951237Z           "evidence": [
2026-06-21T04:47:53.9951312Z             {
2026-06-21T04:47:53.9951413Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.9951509Z               "line": 1440
2026-06-21T04:47:53.9951589Z             },
2026-06-21T04:47:53.9951688Z             {
2026-06-21T04:47:53.9951783Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.9951878Z               "line": 1459
2026-06-21T04:47:53.9951953Z             },
2026-06-21T04:47:53.9952038Z             {
2026-06-21T04:47:53.9952143Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.9952348Z               "line": 1471
2026-06-21T04:47:53.9952435Z             },
2026-06-21T04:47:53.9952525Z             {
2026-06-21T04:47:53.9952629Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.9952725Z               "line": 1499
2026-06-21T04:47:53.9952802Z             }
2026-06-21T04:47:53.9952883Z           ]
2026-06-21T04:47:53.9952968Z         }
2026-06-21T04:47:53.9953054Z       }
2026-06-21T04:47:53.9953141Z     },
2026-06-21T04:47:53.9953221Z     {
2026-06-21T04:47:53.9953321Z       "id": "REQ-RC-WIN-PASTE",
2026-06-21T04:47:53.9958094Z       "title": "In an `spt rc` session neither ctrl+V nor right-click pastes (CC explicitly supports ctrl+V). ROOT (doyle /diagnose): RawGuard does only enable_raw_mode (no bracketed paste / no mouse capture / no clipboard interception); the Windows console delivers a paste as synthetic per-char KEY EVENTs (no crossterm Event::Paste), and ctrl+V translates to bare ^V forwarded to CC — but CC runs DAEMON-SIDE with NO access to the operator's LOCAL clipboard, so remote paste is fundamentally CLIENT-ORIGINATED. A multi-line paste-as-keys also becomes a \\r submit-storm. FIX (doyle design, V0.13.0-P1-RC-PASTE-DESIGN.md, cfg(windows), folds into the bug-2 event path): on a paste gesture rc reads the LOCAL clipboard + forwards a BRACKETED PASTE (ESC[200~ + content + ESC[201~); CC has bracketed-paste mode on (its TUI sets ESC[?2004h) so it treats it as a paste — content intact, no submit-storm, harness-AGNOSTIC. ctrl+V: intercept Char('v')+CONTROL in the event loop -> read_clipboard -> bracketed paste. Right-click: RawGuard also EnableMouseCapture (disables console QuickEdit + enables ENABLE_MOUSE_INPUT so right-click surfaces as Event::Mouse on legacy cmd/powershell) -> right-button -> read_clipboard -> bracketed paste; DROP all other mouse (CC has no mouse features, operator-confirmed, so capture costs nothing). read_clipboard = clipboard-win crate (cfg(windows), minimal); empty/failed = clean no-op. Content forwarded VERBATIM (literal pasted text, no per-char translation). Unix UNCHANGED (its terminal pastes natively through the byte pump). DEPENDS ON P0 (a paste chunk must not wedge the broker). (v0.13.0)",
2026-06-21T04:47:53.9958319Z       "requiredStages": [
2026-06-21T04:47:53.9958399Z         "doc",
2026-06-21T04:47:53.9958481Z         "impl",
2026-06-21T04:47:53.9958572Z         "unit"
2026-06-21T04:47:53.9958653Z       ],
2026-06-21T04:47:53.9958748Z       "stages": {
2026-06-21T04:47:53.9958820Z         "doc": {
2026-06-21T04:47:53.9958910Z           "complete": true,
2026-06-21T04:47:53.9959072Z           "evidence": [
2026-06-21T04:47:53.9959154Z             {
2026-06-21T04:47:53.9959263Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T04:47:53.9959357Z               "line": 447
2026-06-21T04:47:53.9959443Z             }
2026-06-21T04:47:53.9959529Z           ]
2026-06-21T04:47:53.9959613Z         },
2026-06-21T04:47:53.9959698Z         "impl": {
2026-06-21T04:47:53.9959798Z           "complete": true,
2026-06-21T04:47:53.9959894Z           "evidence": [
2026-06-21T04:47:53.9959975Z             {
2026-06-21T04:47:53.9960084Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.9960166Z               "line": 395
2026-06-21T04:47:53.9960252Z             },
2026-06-21T04:47:53.9960341Z             {
2026-06-21T04:47:53.9960443Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.9960533Z               "line": 411
2026-06-21T04:47:53.9960623Z             },
2026-06-21T04:47:53.9960719Z             {
2026-06-21T04:47:53.9960819Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.9960919Z               "line": 454
2026-06-21T04:47:53.9960999Z             },
2026-06-21T04:47:53.9961092Z             {
2026-06-21T04:47:53.9961196Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.9961281Z               "line": 468
2026-06-21T04:47:53.9961367Z             },
2026-06-21T04:47:53.9961449Z             {
2026-06-21T04:47:53.9961553Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.9961750Z               "line": 479
2026-06-21T04:47:53.9961825Z             }
2026-06-21T04:47:53.9961911Z           ]
2026-06-21T04:47:53.9961997Z         },
2026-06-21T04:47:53.9962088Z         "int": {
2026-06-21T04:47:53.9962187Z           "complete": false,
2026-06-21T04:47:53.9962281Z           "evidence": []
2026-06-21T04:47:53.9962363Z         },
2026-06-21T04:47:53.9962443Z         "unit": {
2026-06-21T04:47:53.9962546Z           "complete": true,
2026-06-21T04:47:53.9962627Z           "evidence": [
2026-06-21T04:47:53.9962708Z             {
2026-06-21T04:47:53.9962800Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.9962884Z               "line": 1381
2026-06-21T04:47:53.9963062Z             },
2026-06-21T04:47:53.9963152Z             {
2026-06-21T04:47:53.9963261Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.9963348Z               "line": 1402
2026-06-21T04:47:53.9963433Z             },
2026-06-21T04:47:53.9963519Z             {
2026-06-21T04:47:53.9963624Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.9963720Z               "line": 1423
2026-06-21T04:47:53.9963806Z             }
2026-06-21T04:47:53.9963891Z           ]
2026-06-21T04:47:53.9963978Z         }
2026-06-21T04:47:53.9964063Z       }
2026-06-21T04:47:53.9964144Z     },
2026-06-21T04:47:53.9964230Z     {
2026-06-21T04:47:53.9964331Z       "id": "REQ-RCVIEW-1",
2026-06-21T04:47:53.9968827Z       "title": "Remote-attach controller/viewer model (CONTEXT.md:317): a session's broker OutputLog serves ONE interactive controller (input + EXCLUSIVE PTY resize; its viewport sets the size, sent on attach + every window change via crossterm Event::Resize) plus ANY NUMBER of read-only `--view` attachers (output-only, no input, no resize; client-side letterbox — center+pad when larger, clip+1-line indicator when smaller; only the local ctrl-b d detach chord). Attach intent is three-valued (`Viewer | Control | Take`, wire-default Control): Control to a FREE endpoint becomes controller, Control to a CONTROLLED endpoint is REFUSED with guidance (`--view`/`--take`) — never auto-viewer, never silent-displace. Wire adds (additive, N-1 skip-unknown): `Request.intent`, `Resize{rows,cols}` (controller-only), `Size{rows,cols}` (→viewer), `Displaced{by}` (→displaced controller). The brain-resume cursor (delivered_through, ADR-0018) tracks the CONTROLLER ONLY; viewers replay from their own from_seq and never move it. Dormancy keys on the controller ONLY: controller attach wakes / controller detach goes dormant (even with viewers present); viewer attach/detach is wake-neutral and may watch a dormant endpoint as-is. v1: viewing is gated identically to driving — a viewer runs the same access_check(Unsolicited) as a controller (watching reveals full session contents = a real disclosure); a lighter distinct watch-gate is deferred to cross-subnet/finer-consent (CONTEXT.md:317 'driving ≠ watching' = the future seam).",
2026-06-21T04:47:53.9969026Z       "requiredStages": [
2026-06-21T04:47:53.9969109Z         "doc",
2026-06-21T04:47:53.9969203Z         "impl",
2026-06-21T04:47:53.9969289Z         "unit",
2026-06-21T04:47:53.9969376Z         "int"
2026-06-21T04:47:53.9969461Z       ],
2026-06-21T04:47:53.9969560Z       "stages": {
2026-06-21T04:47:53.9969651Z         "doc": {
2026-06-21T04:47:53.9969744Z           "complete": true,
2026-06-21T04:47:53.9969827Z           "evidence": [
2026-06-21T04:47:53.9969913Z             {
2026-06-21T04:47:53.9970022Z               "path": "CONTEXT.md",
2026-06-21T04:47:53.9970108Z               "line": 342
2026-06-21T04:47:53.9970196Z             }
2026-06-21T04:47:53.9970277Z           ]
2026-06-21T04:47:53.9970358Z         },
2026-06-21T04:47:53.9970455Z         "impl": {
2026-06-21T04:47:53.9970545Z           "complete": true,
2026-06-21T04:47:53.9970635Z           "evidence": [
2026-06-21T04:47:53.9970721Z             {
2026-06-21T04:47:53.9970854Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T04:47:53.9970949Z               "line": 354
2026-06-21T04:47:53.9971131Z             },
2026-06-21T04:47:53.9971212Z             {
2026-06-21T04:47:53.9971337Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.9971437Z               "line": 574
2026-06-21T04:47:53.9971522Z             },
2026-06-21T04:47:53.9971608Z             {
2026-06-21T04:47:53.9971732Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.9971813Z               "line": 585
2026-06-21T04:47:53.9971903Z             },
2026-06-21T04:47:53.9971976Z             {
2026-06-21T04:47:53.9972099Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T04:47:53.9972199Z               "line": 41
2026-06-21T04:47:53.9972366Z             },
2026-06-21T04:47:53.9972451Z             {
2026-06-21T04:47:53.9972572Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T04:47:53.9972653Z               "line": 62
2026-06-21T04:47:53.9972742Z             },
2026-06-21T04:47:53.9972827Z             {
2026-06-21T04:47:53.9972942Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T04:47:53.9973040Z               "line": 309
2026-06-21T04:47:53.9973121Z             },
2026-06-21T04:47:53.9973211Z             {
2026-06-21T04:47:53.9973322Z               "path": "crates/spt/src/rc.rs",
2026-06-21T04:47:53.9973402Z               "line": 701
2026-06-21T04:47:53.9973487Z             }
2026-06-21T04:47:53.9973574Z           ]
2026-06-21T04:47:53.9973660Z         },
2026-06-21T04:47:53.9973745Z         "int": {
2026-06-21T04:47:53.9973836Z           "complete": true,
2026-06-21T04:47:53.9973927Z           "evidence": [
2026-06-21T04:47:53.9974013Z             {
2026-06-21T04:47:53.9974141Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T04:47:53.9974228Z               "line": 913
2026-06-21T04:47:53.9974313Z             },
2026-06-21T04:47:53.9974399Z             {
2026-06-21T04:47:53.9974524Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T04:47:53.9974604Z               "line": 953
2026-06-21T04:47:53.9974689Z             },
2026-06-21T04:47:53.9974775Z             {
2026-06-21T04:47:53.9974895Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T04:47:53.9974989Z               "line": 1000
2026-06-21T04:47:53.9975080Z             },
2026-06-21T04:47:53.9975153Z             {
2026-06-21T04:47:53.9975267Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T04:47:53.9975356Z               "line": 1112
2026-06-21T04:47:53.9975441Z             }
2026-06-21T04:47:53.9975532Z           ]
2026-06-21T04:47:53.9975617Z         },
2026-06-21T04:47:53.9975701Z         "unit": {
2026-06-21T04:47:53.9975788Z           "complete": true,
2026-06-21T04:47:53.9975888Z           "evidence": [
2026-06-21T04:47:53.9975969Z             {
2026-06-21T04:47:53.9976088Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T04:47:53.9976184Z               "line": 175
2026-06-21T04:47:53.9976265Z             },
2026-06-21T04:47:53.9976354Z             {
2026-06-21T04:47:53.9976470Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T04:47:53.9976570Z               "line": 195
2026-06-21T04:47:53.9976655Z             }
2026-06-21T04:47:53.9976742Z           ]
2026-06-21T04:47:53.9976832Z         }
2026-06-21T04:47:53.9976908Z       }
2026-06-21T04:47:53.9977003Z     },
2026-06-21T04:47:53.9977085Z     {
2026-06-21T04:47:53.9977185Z       "id": "REQ-REACH-1",
2026-06-21T04:47:53.9977333Z       "title": "Off-node remote-drive detection + file transfer",
2026-06-21T04:47:53.9977438Z       "requiredStages": [
2026-06-21T04:47:53.9977523Z         "impl",
2026-06-21T04:47:53.9977609Z         "unit",
2026-06-21T04:47:53.9977696Z         "int"
2026-06-21T04:47:53.9977782Z       ],
2026-06-21T04:47:53.9977866Z       "stages": {
2026-06-21T04:47:53.9977952Z         "doc": {
2026-06-21T04:47:53.9978049Z           "complete": false,
2026-06-21T04:47:53.9978134Z           "evidence": []
2026-06-21T04:47:53.9978218Z         },
2026-06-21T04:47:53.9978304Z         "impl": {
2026-06-21T04:47:53.9978477Z           "complete": true,
2026-06-21T04:47:53.9978576Z           "evidence": [
2026-06-21T04:47:53.9978657Z             {
2026-06-21T04:47:53.9978776Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:53.9978866Z               "line": 574
2026-06-21T04:47:53.9979025Z             },
2026-06-21T04:47:53.9979101Z             {
2026-06-21T04:47:53.9979214Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T04:47:53.9979311Z               "line": 76
2026-06-21T04:47:53.9979397Z             },
2026-06-21T04:47:53.9979478Z             {
2026-06-21T04:47:53.9979596Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T04:47:53.9979782Z               "line": 222
2026-06-21T04:47:53.9979863Z             },
2026-06-21T04:47:53.9979945Z             {
2026-06-21T04:47:53.9980064Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T04:47:53.9980154Z               "line": 422
2026-06-21T04:47:53.9980240Z             },
2026-06-21T04:47:53.9980332Z             {
2026-06-21T04:47:53.9980440Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T04:47:53.9980539Z               "line": 529
2026-06-21T04:47:53.9980621Z             },
2026-06-21T04:47:53.9980705Z             {
2026-06-21T04:47:53.9980823Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T04:47:53.9980918Z               "line": 39
2026-06-21T04:47:53.9981010Z             },
2026-06-21T04:47:53.9981090Z             {
2026-06-21T04:47:53.9981214Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T04:47:53.9981296Z               "line": 301
2026-06-21T04:47:53.9981386Z             },
2026-06-21T04:47:53.9981481Z             {
2026-06-21T04:47:53.9981597Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T04:47:53.9981687Z               "line": 88
2026-06-21T04:47:53.9981772Z             },
2026-06-21T04:47:53.9981858Z             {
2026-06-21T04:47:53.9981958Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T04:47:53.9982058Z               "line": 98
2026-06-21T04:47:53.9982153Z             },
2026-06-21T04:47:53.9982231Z             {
2026-06-21T04:47:53.9982359Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:53.9982440Z               "line": 233
2026-06-21T04:47:53.9982522Z             }
2026-06-21T04:47:53.9982607Z           ]
2026-06-21T04:47:53.9982692Z         },
2026-06-21T04:47:53.9982783Z         "int": {
2026-06-21T04:47:53.9982870Z           "complete": true,
2026-06-21T04:47:53.9982964Z           "evidence": [
2026-06-21T04:47:53.9983045Z             {
2026-06-21T04:47:53.9983166Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T04:47:53.9983265Z               "line": 415
2026-06-21T04:47:53.9983350Z             },
2026-06-21T04:47:53.9983435Z             {
2026-06-21T04:47:53.9983563Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T04:47:53.9983662Z               "line": 520
2026-06-21T04:47:53.9983747Z             },
2026-06-21T04:47:53.9983838Z             {
2026-06-21T04:47:53.9983957Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T04:47:53.9984047Z               "line": 998
2026-06-21T04:47:53.9984135Z             },
2026-06-21T04:47:53.9984215Z             {
2026-06-21T04:47:53.9984343Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T04:47:53.9984430Z               "line": 1383
2026-06-21T04:47:53.9984525Z             }
2026-06-21T04:47:53.9984606Z           ]
2026-06-21T04:47:53.9984696Z         },
2026-06-21T04:47:53.9984788Z         "unit": {
2026-06-21T04:47:53.9984878Z           "complete": true,
2026-06-21T04:47:53.9984983Z           "evidence": [
2026-06-21T04:47:53.9985069Z             {
2026-06-21T04:47:53.9985197Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T04:47:53.9985283Z               "line": 639
2026-06-21T04:47:53.9985369Z             },
2026-06-21T04:47:53.9985451Z             {
2026-06-21T04:47:53.9985564Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T04:47:53.9985766Z               "line": 660
2026-06-21T04:47:53.9985855Z             },
2026-06-21T04:47:53.9985940Z             {
2026-06-21T04:47:53.9986064Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T04:47:53.9986163Z               "line": 768
2026-06-21T04:47:53.9986252Z             },
2026-06-21T04:47:53.9986338Z             {
2026-06-21T04:47:53.9986468Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T04:47:53.9986553Z               "line": 93
2026-06-21T04:47:53.9986643Z             },
2026-06-21T04:47:53.9986725Z             {
2026-06-21T04:47:53.9986849Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T04:47:53.9987016Z               "line": 224
2026-06-21T04:47:53.9987102Z             },
2026-06-21T04:47:53.9987182Z             {
2026-06-21T04:47:53.9987302Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T04:47:53.9987392Z               "line": 96
2026-06-21T04:47:53.9987478Z             },
2026-06-21T04:47:53.9987573Z             {
2026-06-21T04:47:53.9987693Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T04:47:53.9987802Z               "line": 146
2026-06-21T04:47:53.9987888Z             },
2026-06-21T04:47:53.9987975Z             {
2026-06-21T04:47:53.9988093Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T04:47:53.9988188Z               "line": 698
2026-06-21T04:47:53.9988271Z             },
2026-06-21T04:47:53.9988356Z             {
2026-06-21T04:47:53.9988475Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T04:47:53.9988566Z               "line": 118
2026-06-21T04:47:53.9988642Z             },
2026-06-21T04:47:53.9988736Z             {
2026-06-21T04:47:53.9988845Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T04:47:53.9988931Z               "line": 148
2026-06-21T04:47:53.9989098Z             },
2026-06-21T04:47:53.9989184Z             {
2026-06-21T04:47:53.9989309Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:53.9989399Z               "line": 928
2026-06-21T04:47:53.9989484Z             }
2026-06-21T04:47:53.9989571Z           ]
2026-06-21T04:47:53.9989656Z         }
2026-06-21T04:47:53.9989742Z       }
2026-06-21T04:47:53.9989827Z     },
2026-06-21T04:47:53.9989909Z     {
2026-06-21T04:47:53.9990004Z       "id": "REQ-REACH-2",
2026-06-21T04:47:53.9990166Z       "title": "Remote command execution (deferred, consent-gated)",
2026-06-21T04:47:53.9990267Z       "requiredStages": [],
2026-06-21T04:47:53.9990357Z       "stages": {
2026-06-21T04:47:53.9990442Z         "doc": {
2026-06-21T04:47:53.9990534Z           "complete": false,
2026-06-21T04:47:53.9990629Z           "evidence": []
2026-06-21T04:47:53.9990728Z         },
2026-06-21T04:47:53.9990859Z         "impl": {
2026-06-21T04:47:53.9990958Z           "complete": false,
2026-06-21T04:47:53.9991043Z           "evidence": []
2026-06-21T04:47:53.9991157Z         },
2026-06-21T04:47:53.9991256Z         "int": {
2026-06-21T04:47:53.9991355Z           "complete": false,
2026-06-21T04:47:53.9991445Z           "evidence": []
2026-06-21T04:47:53.9991527Z         },
2026-06-21T04:47:53.9991618Z         "unit": {
2026-06-21T04:47:53.9991703Z           "complete": false,
2026-06-21T04:47:53.9991794Z           "evidence": []
2026-06-21T04:47:53.9991875Z         }
2026-06-21T04:47:53.9991970Z       }
2026-06-21T04:47:53.9992041Z     },
2026-06-21T04:47:53.9992138Z     {
2026-06-21T04:47:53.9992285Z       "id": "REQ-READY-AGENT-RESUME",
2026-06-21T04:47:53.9995843Z       "title": "An offline ReadyAgent shows in `spt endpoint run`'s picker Resume-from-history and resumes correctly — closing the gap that today only LiveAgents do. ROOT: a harness-hosted ready bind (ReadyAgent::start_homed, ready.rs) writes info.json DIRECTLY and never appends the session ledger (unlike the shared establish_perch:250 live path), so a ready agent — though it has a session_id — produces ZERO ledger rows → the picker's offline+local Resume-from-history (which gates on ledger rows) never offers it. FIX (1): ledger the ready bind (ReadyAgent::start_homed → sessions::append Boot, mirroring establish_perch). FIX (2): `spt endpoint run --resume <session>` honors the adapter MANIFEST's endpoint TYPE — a ReadyAgent manifest (no [session.psyche_init]) resumes as a ready endpoint (poll listener, NO psyche-host); a LiveAgent (with psyche_init) as live. NO new bringup mode + NO picker changes (operator 2026-06-18): `spt endpoint run` is the spt-hosted ENDPOINT bringup for BOTH types, the type IS the adapter-manifest's concern (psyche-host already keys on psyche_init presence) — so (2) likely already holds; VERIFY at code, build only the residual. (v0.12.0)",
2026-06-21T04:47:53.9996148Z       "requiredStages": [
2026-06-21T04:47:53.9996245Z         "doc",
2026-06-21T04:47:53.9996335Z         "impl",
2026-06-21T04:47:53.9996424Z         "unit",
2026-06-21T04:47:53.9996519Z         "int"
2026-06-21T04:47:53.9996605Z       ],
2026-06-21T04:47:53.9996704Z       "stages": {
2026-06-21T04:47:53.9996789Z         "doc": {
2026-06-21T04:47:53.9996898Z           "complete": true,
2026-06-21T04:47:53.9996990Z           "evidence": [
2026-06-21T04:47:53.9997080Z             {
2026-06-21T04:47:53.9997184Z               "path": "CONTEXT.md",
2026-06-21T04:47:53.9997266Z               "line": 372
2026-06-21T04:47:53.9997356Z             }
2026-06-21T04:47:53.9997442Z           ]
2026-06-21T04:47:53.9997532Z         },
2026-06-21T04:47:53.9997633Z         "impl": {
2026-06-21T04:47:53.9997714Z           "complete": true,
2026-06-21T04:47:53.9997799Z           "evidence": [
2026-06-21T04:47:53.9997887Z             {
2026-06-21T04:47:53.9998005Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T04:47:53.9998104Z               "line": 110
2026-06-21T04:47:53.9998191Z             }
2026-06-21T04:47:53.9998272Z           ]
2026-06-21T04:47:53.9998358Z         },
2026-06-21T04:47:53.9998443Z         "int": {
2026-06-21T04:47:53.9998535Z           "complete": true,
2026-06-21T04:47:53.9998620Z           "evidence": [
2026-06-21T04:47:53.9998711Z             {
2026-06-21T04:47:53.9998859Z               "path": "crates/spt/tests/ready_resume_ledger_e2e.rs",
2026-06-21T04:47:53.9999044Z               "line": 26
2026-06-21T04:47:53.9999116Z             }
2026-06-21T04:47:53.9999217Z           ]
2026-06-21T04:47:53.9999306Z         },
2026-06-21T04:47:53.9999405Z         "unit": {
2026-06-21T04:47:53.9999501Z           "complete": true,
2026-06-21T04:47:53.9999602Z           "evidence": [
2026-06-21T04:47:53.9999691Z             {
2026-06-21T04:47:53.9999811Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T04:47:53.9999902Z               "line": 320
2026-06-21T04:47:53.9999978Z             }
2026-06-21T04:47:54.0000068Z           ]
2026-06-21T04:47:54.0000145Z         }
2026-06-21T04:47:54.0000240Z       }
2026-06-21T04:47:54.0000335Z     },
2026-06-21T04:47:54.0000421Z     {
2026-06-21T04:47:54.0000522Z       "id": "REQ-REL-1",
2026-06-21T04:47:54.0000893Z       "title": "spt-releases publish-target repo: README public face, licensing split, Pages docs at the permanent lapse-proof canonical URL (ADR-0014)",
2026-06-21T04:47:54.0001002Z       "requiredStages": [
2026-06-21T04:47:54.0001085Z         "doc",
2026-06-21T04:47:54.0001175Z         "impl"
2026-06-21T04:47:54.0001255Z       ],
2026-06-21T04:47:54.0001337Z       "stages": {
2026-06-21T04:47:54.0001419Z         "doc": {
2026-06-21T04:47:54.0001518Z           "complete": true,
2026-06-21T04:47:54.0001617Z           "evidence": [
2026-06-21T04:47:54.0001698Z             {
2026-06-21T04:47:54.0001924Z               "path": "docs/adr/0014-publish-target-repo-and-lapse-proof-canonical-url.md",
2026-06-21T04:47:54.0002030Z               "line": 3
2026-06-21T04:47:54.0002111Z             }
2026-06-21T04:47:54.0002206Z           ]
2026-06-21T04:47:54.0002287Z         },
2026-06-21T04:47:54.0002382Z         "impl": {
2026-06-21T04:47:54.0002488Z           "complete": true,
2026-06-21T04:47:54.0002577Z           "evidence": [
2026-06-21T04:47:54.0002669Z             {
2026-06-21T04:47:54.0002897Z               "path": ".github/workflows/docs-publish.yml",
2026-06-21T04:47:54.0002989Z               "line": 11
2026-06-21T04:47:54.0003074Z             },
2026-06-21T04:47:54.0003160Z             {
2026-06-21T04:47:54.0003278Z               "path": "crates/xtask/src/main.rs",
2026-06-21T04:47:54.0003370Z               "line": 265
2026-06-21T04:47:54.0003460Z             }
2026-06-21T04:47:54.0003545Z           ]
2026-06-21T04:47:54.0003637Z         },
2026-06-21T04:47:54.0003727Z         "int": {
2026-06-21T04:47:54.0003827Z           "complete": false,
2026-06-21T04:47:54.0003923Z           "evidence": []
2026-06-21T04:47:54.0004103Z         },
2026-06-21T04:47:54.0004189Z         "unit": {
2026-06-21T04:47:54.0004286Z           "complete": false,
2026-06-21T04:47:54.0004367Z           "evidence": []
2026-06-21T04:47:54.0004451Z         }
2026-06-21T04:47:54.0004536Z       }
2026-06-21T04:47:54.0004622Z     },
2026-06-21T04:47:54.0004712Z     {
2026-06-21T04:47:54.0004801Z       "id": "REQ-REL-2",
2026-06-21T04:47:54.0005284Z       "title": "Release asset set consumable by the self-updater: platform binaries, SHA256SUMS, SignedRelease metadata, manifest schema, mock-adapter zip; tag-triggered cross-repo pipeline",
2026-06-21T04:47:54.0005388Z       "requiredStages": [
2026-06-21T04:47:54.0005478Z         "impl",
2026-06-21T04:47:54.0005565Z         "int"
2026-06-21T04:47:54.0005655Z       ],
2026-06-21T04:47:54.0005740Z       "stages": {
2026-06-21T04:47:54.0005826Z         "doc": {
2026-06-21T04:47:54.0005923Z           "complete": true,
2026-06-21T04:47:54.0006022Z           "evidence": [
2026-06-21T04:47:54.0006098Z             {
2026-06-21T04:47:54.0006228Z               "path": "docs/RELEASE-RUNBOOK.md",
2026-06-21T04:47:54.0006312Z               "line": 6
2026-06-21T04:47:54.0006398Z             }
2026-06-21T04:47:54.0006490Z           ]
2026-06-21T04:47:54.0006571Z         },
2026-06-21T04:47:54.0006665Z         "impl": {
2026-06-21T04:47:54.0006756Z           "complete": true,
2026-06-21T04:47:54.0006853Z           "evidence": [
2026-06-21T04:47:54.0006942Z             {
2026-06-21T04:47:54.0007065Z               "path": ".github/workflows/release.yml",
2026-06-21T04:47:54.0007160Z               "line": 16
2026-06-21T04:47:54.0007245Z             },
2026-06-21T04:47:54.0007335Z             {
2026-06-21T04:47:54.0007434Z               "path": "crates/xtask/src/main.rs",
2026-06-21T04:47:54.0007535Z               "line": 352
2026-06-21T04:47:54.0007616Z             },
2026-06-21T04:47:54.0007706Z             {
2026-06-21T04:47:54.0007817Z               "path": "crates/xtask/src/main.rs",
2026-06-21T04:47:54.0007898Z               "line": 426
2026-06-21T04:47:54.0007987Z             },
2026-06-21T04:47:54.0008073Z             {
2026-06-21T04:47:54.0008183Z               "path": "crates/xtask/src/main.rs",
2026-06-21T04:47:54.0008269Z               "line": 588
2026-06-21T04:47:54.0008359Z             },
2026-06-21T04:47:54.0008442Z             {
2026-06-21T04:47:54.0008550Z               "path": "crates/xtask/src/main.rs",
2026-06-21T04:47:54.0008645Z               "line": 720
2026-06-21T04:47:54.0008732Z             }
2026-06-21T04:47:54.0008813Z           ]
2026-06-21T04:47:54.0008899Z         },
2026-06-21T04:47:54.0009042Z         "int": {
2026-06-21T04:47:54.0009142Z           "complete": true,
2026-06-21T04:47:54.0009232Z           "evidence": [
2026-06-21T04:47:54.0009313Z             {
2026-06-21T04:47:54.0009448Z               "path": "crates/spt/tests/release_verify_e2e.rs",
2026-06-21T04:47:54.0009537Z               "line": 13
2026-06-21T04:47:54.0009624Z             }
2026-06-21T04:47:54.0009710Z           ]
2026-06-21T04:47:54.0009800Z         },
2026-06-21T04:47:54.0009890Z         "unit": {
2026-06-21T04:47:54.0009994Z           "complete": false,
2026-06-21T04:47:54.0010080Z           "evidence": []
2026-06-21T04:47:54.0010162Z         }
2026-06-21T04:47:54.0010251Z       }
2026-06-21T04:47:54.0010342Z     },
2026-06-21T04:47:54.0010434Z     {
2026-06-21T04:47:54.0010628Z       "id": "REQ-REL-3",
2026-06-21T04:47:54.0011077Z       "title": "Two-key release-signing trust anchor: primary + offline never-used recovery, both pubkeys embedded in the binary's trusted set, manual local signing (ADR-0015)",
2026-06-21T04:47:54.0011172Z       "requiredStages": [
2026-06-21T04:47:54.0011262Z         "impl",
2026-06-21T04:47:54.0011344Z         "unit"
2026-06-21T04:47:54.0011434Z       ],
2026-06-21T04:47:54.0011525Z       "stages": {
2026-06-21T04:47:54.0011611Z         "doc": {
2026-06-21T04:47:54.0011711Z           "complete": false,
2026-06-21T04:47:54.0011796Z           "evidence": []
2026-06-21T04:47:54.0011872Z         },
2026-06-21T04:47:54.0012078Z         "impl": {
2026-06-21T04:47:54.0012172Z           "complete": true,
2026-06-21T04:47:54.0012263Z           "evidence": [
2026-06-21T04:47:54.0012349Z             {
2026-06-21T04:47:54.0012475Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:54.0012565Z               "line": 237
2026-06-21T04:47:54.0012662Z             },
2026-06-21T04:47:54.0012752Z             {
2026-06-21T04:47:54.0012875Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:54.0015839Z               "line": 289
2026-06-21T04:47:54.0015948Z             },
2026-06-21T04:47:54.0016043Z             {
2026-06-21T04:47:54.0016163Z               "path": "crates/xtask/src/main.rs",
2026-06-21T04:47:54.0016249Z               "line": 329
2026-06-21T04:47:54.0016338Z             },
2026-06-21T04:47:54.0016415Z             {
2026-06-21T04:47:54.0016544Z               "path": "crates/xtask/src/main.rs",
2026-06-21T04:47:54.0016644Z               "line": 353
2026-06-21T04:47:54.0016745Z             },
2026-06-21T04:47:54.0016831Z             {
2026-06-21T04:47:54.0016944Z               "path": "crates/xtask/src/main.rs",
2026-06-21T04:47:54.0017040Z               "line": 394
2026-06-21T04:47:54.0017127Z             }
2026-06-21T04:47:54.0017211Z           ]
2026-06-21T04:47:54.0017297Z         },
2026-06-21T04:47:54.0017389Z         "int": {
2026-06-21T04:47:54.0017479Z           "complete": false,
2026-06-21T04:47:54.0017568Z           "evidence": []
2026-06-21T04:47:54.0017653Z         },
2026-06-21T04:47:54.0017740Z         "unit": {
2026-06-21T04:47:54.0017834Z           "complete": true,
2026-06-21T04:47:54.0017928Z           "evidence": [
2026-06-21T04:47:54.0018014Z             {
2026-06-21T04:47:54.0018144Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:54.0018228Z               "line": 1045
2026-06-21T04:47:54.0018319Z             },
2026-06-21T04:47:54.0018401Z             {
2026-06-21T04:47:54.0018524Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:54.0018605Z               "line": 1104
2026-06-21T04:47:54.0018697Z             }
2026-06-21T04:47:54.0018787Z           ]
2026-06-21T04:47:54.0018872Z         }
2026-06-21T04:47:54.0019045Z       }
2026-06-21T04:47:54.0019134Z     },
2026-06-21T04:47:54.0019215Z     {
2026-06-21T04:47:54.0019316Z       "id": "REQ-RUN-PICKER",
2026-06-21T04:47:54.0024128Z       "title": "Interactive `spt endpoint run` picker (ratatui TUI): bare `spt endpoint run` (no --adapter/--id) enters an in-process picker (flags-present = the REQ-HOST-RUN-1 non-interactive path, untouched). Layer 1 picks kind (Create new | Pick existing). Create-new: choose a registered kind=\"harness\" adapter with its shipped+local profiles tree-nested (registry::registered / manifest.profiles / local_profile_names) → enter a charset-validated id → start. Pick-existing: category select (left/right) over [<cwd-project> | Local node | Subnet], endpoints grouped + alphabetically sorted per category, a status square per endpoint (online green ■ / offline gray ▢ — the blue \"attached\" tri-state + Kick are DEFERRED to a broker attach-presence slice, M12-W2-RULING Q1), type-to-filter (`/`, nucleo-matcher), a pinned keybind legend, and a right-half two-pane description (harness adapter:profile · best-effort project history newest→oldest from the contextstore p-<project> branches, empty-if-none · `spt endpoint description`). Confirm layer offers status-dependent options — Attach/Start/View (rc pump / cmd_endpoint_run) · Instantiate-locally (remote) · Change-harness-adapter (offline) · Fork (cmd_fork) · Resume-from-history (offline+LOCAL only; enumerate spt_store::sessions::last_k, titles `<project> @ <ts> (…id5)`, feed session_id → cmd_endpoint_run --resume). A single action enum is the source of truth so a future tap-mode (phone PTY) layers on without re-coupling to keybinds. EVERY terminal action routes through cmd_endpoint_run / existing CLI fns — no second bringup path.",
2026-06-21T04:47:54.0024375Z       "requiredStages": [
2026-06-21T04:47:54.0024552Z         "doc",
2026-06-21T04:47:54.0024642Z         "impl",
2026-06-21T04:47:54.0024723Z         "unit"
2026-06-21T04:47:54.0024815Z       ],
2026-06-21T04:47:54.0024904Z       "stages": {
2026-06-21T04:47:54.0024994Z         "doc": {
2026-06-21T04:47:54.0025092Z           "complete": true,
2026-06-21T04:47:54.0025181Z           "evidence": [
2026-06-21T04:47:54.0025262Z             {
2026-06-21T04:47:54.0025363Z               "path": "CONTEXT.md",
2026-06-21T04:47:54.0025459Z               "line": 349
2026-06-21T04:47:54.0025543Z             }
2026-06-21T04:47:54.0025628Z           ]
2026-06-21T04:47:54.0025719Z         },
2026-06-21T04:47:54.0025799Z         "impl": {
2026-06-21T04:47:54.0025898Z           "complete": true,
2026-06-21T04:47:54.0025988Z           "evidence": [
2026-06-21T04:47:54.0026069Z             {
2026-06-21T04:47:54.0026180Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0026274Z               "line": 958
2026-06-21T04:47:54.0026380Z             },
2026-06-21T04:47:54.0026470Z             {
2026-06-21T04:47:54.0026584Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0026676Z               "line": 968
2026-06-21T04:47:54.0026766Z             },
2026-06-21T04:47:54.0026852Z             {
2026-06-21T04:47:54.0026980Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T04:47:54.0027062Z               "line": 9
2026-06-21T04:47:54.0027147Z             },
2026-06-21T04:47:54.0027237Z             {
2026-06-21T04:47:54.0027353Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T04:47:54.0027433Z               "line": 67
2026-06-21T04:47:54.0027523Z             },
2026-06-21T04:47:54.0027610Z             {
2026-06-21T04:47:54.0027748Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-21T04:47:54.0027838Z               "line": 16
2026-06-21T04:47:54.0027930Z             },
2026-06-21T04:47:54.0028011Z             {
2026-06-21T04:47:54.0028133Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-21T04:47:54.0028237Z               "line": 254
2026-06-21T04:47:54.0028328Z             },
2026-06-21T04:47:54.0028417Z             {
2026-06-21T04:47:54.0028535Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T04:47:54.0028636Z               "line": 11
2026-06-21T04:47:54.0028718Z             },
2026-06-21T04:47:54.0028807Z             {
2026-06-21T04:47:54.0028937Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T04:47:54.0029112Z               "line": 115
2026-06-21T04:47:54.0029203Z             },
2026-06-21T04:47:54.0029286Z             {
2026-06-21T04:47:54.0029404Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T04:47:54.0029494Z               "line": 554
2026-06-21T04:47:54.0029576Z             },
2026-06-21T04:47:54.0029656Z             {
2026-06-21T04:47:54.0029775Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T04:47:54.0029867Z               "line": 635
2026-06-21T04:47:54.0029953Z             },
2026-06-21T04:47:54.0030043Z             {
2026-06-21T04:47:54.0030157Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T04:47:54.0030254Z               "line": 694
2026-06-21T04:47:54.0030333Z             },
2026-06-21T04:47:54.0030414Z             {
2026-06-21T04:47:54.0030535Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T04:47:54.0030715Z               "line": 747
2026-06-21T04:47:54.0030807Z             },
2026-06-21T04:47:54.0030888Z             {
2026-06-21T04:47:54.0031005Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T04:47:54.0031090Z               "line": 785
2026-06-21T04:47:54.0031172Z             },
2026-06-21T04:47:54.0031254Z             {
2026-06-21T04:47:54.0031362Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T04:47:54.0031448Z               "line": 8
2026-06-21T04:47:54.0031535Z             }
2026-06-21T04:47:54.0031620Z           ]
2026-06-21T04:47:54.0031706Z         },
2026-06-21T04:47:54.0031792Z         "int": {
2026-06-21T04:47:54.0031987Z           "complete": false,
2026-06-21T04:47:54.0032073Z           "evidence": []
2026-06-21T04:47:54.0032160Z         },
2026-06-21T04:47:54.0032245Z         "unit": {
2026-06-21T04:47:54.0032335Z           "complete": true,
2026-06-21T04:47:54.0032421Z           "evidence": [
2026-06-21T04:47:54.0032507Z             {
2026-06-21T04:47:54.0032626Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0032712Z               "line": 7638
2026-06-21T04:47:54.0032799Z             },
2026-06-21T04:47:54.0032883Z             {
2026-06-21T04:47:54.0032993Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0033085Z               "line": 7649
2026-06-21T04:47:54.0033180Z             },
2026-06-21T04:47:54.0033269Z             {
2026-06-21T04:47:54.0033378Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T04:47:54.0033469Z               "line": 879
2026-06-21T04:47:54.0033548Z             },
2026-06-21T04:47:54.0033638Z             {
2026-06-21T04:47:54.0033758Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T04:47:54.0033849Z               "line": 928
2026-06-21T04:47:54.0033934Z             },
2026-06-21T04:47:54.0034015Z             {
2026-06-21T04:47:54.0034135Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T04:47:54.0034229Z               "line": 979
2026-06-21T04:47:54.0034320Z             },
2026-06-21T04:47:54.0034407Z             {
2026-06-21T04:47:54.0034516Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T04:47:54.0034615Z               "line": 996
2026-06-21T04:47:54.0034698Z             },
2026-06-21T04:47:54.0034788Z             {
2026-06-21T04:47:54.0034892Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T04:47:54.0034978Z               "line": 1005
2026-06-21T04:47:54.0035060Z             },
2026-06-21T04:47:54.0035145Z             {
2026-06-21T04:47:54.0035254Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T04:47:54.0035346Z               "line": 1016
2026-06-21T04:47:54.0035431Z             },
2026-06-21T04:47:54.0035508Z             {
2026-06-21T04:47:54.0035613Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T04:47:54.0035704Z               "line": 1038
2026-06-21T04:47:54.0035789Z             },
2026-06-21T04:47:54.0035870Z             {
2026-06-21T04:47:54.0035981Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T04:47:54.0036070Z               "line": 1057
2026-06-21T04:47:54.0036159Z             },
2026-06-21T04:47:54.0036236Z             {
2026-06-21T04:47:54.0036355Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T04:47:54.0036449Z               "line": 1107
2026-06-21T04:47:54.0036538Z             },
2026-06-21T04:47:54.0036625Z             {
2026-06-21T04:47:54.0036749Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T04:47:54.0036829Z               "line": 1136
2026-06-21T04:47:54.0036911Z             },
2026-06-21T04:47:54.0036998Z             {
2026-06-21T04:47:54.0037116Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T04:47:54.0037206Z               "line": 1149
2026-06-21T04:47:54.0037288Z             },
2026-06-21T04:47:54.0037379Z             {
2026-06-21T04:47:54.0037492Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T04:47:54.0037579Z               "line": 1215
2026-06-21T04:47:54.0037741Z             },
2026-06-21T04:47:54.0037822Z             {
2026-06-21T04:47:54.0037937Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T04:47:54.0038026Z               "line": 1256
2026-06-21T04:47:54.0038112Z             },
2026-06-21T04:47:54.0038200Z             {
2026-06-21T04:47:54.0038313Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T04:47:54.0038403Z               "line": 1272
2026-06-21T04:47:54.0038480Z             },
2026-06-21T04:47:54.0038571Z             {
2026-06-21T04:47:54.0038674Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T04:47:54.0038764Z               "line": 491
2026-06-21T04:47:54.0038917Z             },
2026-06-21T04:47:54.0039077Z             {
2026-06-21T04:47:54.0039196Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T04:47:54.0039283Z               "line": 506
2026-06-21T04:47:54.0039367Z             },
2026-06-21T04:47:54.0039453Z             {
2026-06-21T04:47:54.0039582Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T04:47:54.0039668Z               "line": 524
2026-06-21T04:47:54.0039754Z             },
2026-06-21T04:47:54.0039831Z             {
2026-06-21T04:47:54.0039936Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T04:47:54.0040035Z               "line": 546
2026-06-21T04:47:54.0040117Z             },
2026-06-21T04:47:54.0040198Z             {
2026-06-21T04:47:54.0040312Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T04:47:54.0040397Z               "line": 556
2026-06-21T04:47:54.0040480Z             },
2026-06-21T04:47:54.0040564Z             {
2026-06-21T04:47:54.0040684Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T04:47:54.0040775Z               "line": 582
2026-06-21T04:47:54.0040861Z             }
2026-06-21T04:47:54.0040951Z           ]
2026-06-21T04:47:54.0041027Z         }
2026-06-21T04:47:54.0041119Z       }
2026-06-21T04:47:54.0041199Z     },
2026-06-21T04:47:54.0041275Z     {
2026-06-21T04:47:54.0041386Z       "id": "REQ-RUN-SHORTCUT",
2026-06-21T04:47:54.0046101Z       "title": "`<basename>-<id>` launcher shortcut generation (picker `s` keybind, M12-W2-T2.4): from any pre-start options set the picker writes/updates a `<basename>-<id>` launcher at the project root baking the current selection's non-interactive `spt endpoint run` flags (terminal actions only: adapter[:profile] + id + (create|resume) + (start|attach|view); Kick/Instantiate/Change-adapter/Fork are interactive-only, not bakeable). BASENAME IS A PARAMETER (operator rev. 2026-06-14): harness-agnostic spt-core defaults to `spt` (→ `spt-<id>`); an adapter/flow OVERRIDES it (spt-claude-code → `cc`), so spt-core NEVER bakes `cc` (a harness name) into itself. The basename must be a DISTINCT token, never bare `spt` (a `spt.cmd` would shadow the real `spt.exe` only under cmd.exe cwd-first search, silently no-op in PowerShell/Unix, and self-recurse). The script is the CURRENT OS's native form — `.cmd` on Windows (NOT `.ps1`: default PATHEXT excludes `.ps1` so a bare/ext-less name never resolves one; `.cmd` is PATHEXT-resolvable), POSIX `sh` (+chmod +x) on Unix (a single portable form can't be both). The generated header documents the invocation reality (cmd.exe bare `<name>` in the project dir / PowerShell `.\\<name>` / Unix `./<name>`; a truly-bare basename on PATH = a PATH-installed launcher, `/spt:setup`'s job). Overwrite is SENTINEL-guarded: the generator writes + checks a generated-by header marker — it overwrites its own prior output freely, but REFUSES + warns if a same-named file lacks the sentinel (never clobber a user file). Requires the additive `--create` flag on `Run{}` (the default-fresh made explicit; N-1-safe).",
2026-06-21T04:47:54.0046217Z       "requiredStages": [
2026-06-21T04:47:54.0046306Z         "doc",
2026-06-21T04:47:54.0046392Z         "impl",
2026-06-21T04:47:54.0046479Z         "unit"
2026-06-21T04:47:54.0046584Z       ],
2026-06-21T04:47:54.0046682Z       "stages": {
2026-06-21T04:47:54.0046887Z         "doc": {
2026-06-21T04:47:54.0046985Z           "complete": true,
2026-06-21T04:47:54.0047084Z           "evidence": [
2026-06-21T04:47:54.0047171Z             {
2026-06-21T04:47:54.0047271Z               "path": "CONTEXT.md",
2026-06-21T04:47:54.0047366Z               "line": 390
2026-06-21T04:47:54.0047452Z             }
2026-06-21T04:47:54.0047543Z           ]
2026-06-21T04:47:54.0047624Z         },
2026-06-21T04:47:54.0047709Z         "impl": {
2026-06-21T04:47:54.0047806Z           "complete": true,
2026-06-21T04:47:54.0047891Z           "evidence": [
2026-06-21T04:47:54.0047981Z             {
2026-06-21T04:47:54.0048110Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T04:47:54.0048310Z               "line": 39
2026-06-21T04:47:54.0048396Z             },
2026-06-21T04:47:54.0048483Z             {
2026-06-21T04:47:54.0048610Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T04:47:54.0048691Z               "line": 79
2026-06-21T04:47:54.0048774Z             },
2026-06-21T04:47:54.0048864Z             {
2026-06-21T04:47:54.0049060Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T04:47:54.0049145Z               "line": 162
2026-06-21T04:47:54.0049235Z             }
2026-06-21T04:47:54.0049315Z           ]
2026-06-21T04:47:54.0049396Z         },
2026-06-21T04:47:54.0049477Z         "int": {
2026-06-21T04:47:54.0049566Z           "complete": false,
2026-06-21T04:47:54.0049661Z           "evidence": []
2026-06-21T04:47:54.0049742Z         },
2026-06-21T04:47:54.0049824Z         "unit": {
2026-06-21T04:47:54.0049927Z           "complete": true,
2026-06-21T04:47:54.0050018Z           "evidence": [
2026-06-21T04:47:54.0050105Z             {
2026-06-21T04:47:54.0050228Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T04:47:54.0050323Z               "line": 206
2026-06-21T04:47:54.0050406Z             },
2026-06-21T04:47:54.0050491Z             {
2026-06-21T04:47:54.0050624Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T04:47:54.0050715Z               "line": 222
2026-06-21T04:47:54.0050800Z             },
2026-06-21T04:47:54.0050877Z             {
2026-06-21T04:47:54.0051007Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T04:47:54.0051087Z               "line": 238
2026-06-21T04:47:54.0051183Z             },
2026-06-21T04:47:54.0051263Z             {
2026-06-21T04:47:54.0051388Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T04:47:54.0051482Z               "line": 251
2026-06-21T04:47:54.0051563Z             },
2026-06-21T04:47:54.0051646Z             {
2026-06-21T04:47:54.0051764Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T04:47:54.0051849Z               "line": 258
2026-06-21T04:47:54.0051937Z             }
2026-06-21T04:47:54.0052023Z           ]
2026-06-21T04:47:54.0052111Z         }
2026-06-21T04:47:54.0052196Z       }
2026-06-21T04:47:54.0052278Z     },
2026-06-21T04:47:54.0052364Z     {
2026-06-21T04:47:54.0052473Z       "id": "REQ-SEAM-ACTIVITY",
2026-06-21T04:47:54.0052669Z       "title": "Activity/idle reported via api sentinels, not PTY quiescence",
2026-06-21T04:47:54.0052764Z       "requiredStages": [
2026-06-21T04:47:54.0052854Z         "impl",
2026-06-21T04:47:54.0052941Z         "unit"
2026-06-21T04:47:54.0053031Z       ],
2026-06-21T04:47:54.0053121Z       "stages": {
2026-06-21T04:47:54.0053212Z         "doc": {
2026-06-21T04:47:54.0053308Z           "complete": false,
2026-06-21T04:47:54.0053389Z           "evidence": []
2026-06-21T04:47:54.0053479Z         },
2026-06-21T04:47:54.0053556Z         "impl": {
2026-06-21T04:47:54.0053656Z           "complete": true,
2026-06-21T04:47:54.0053746Z           "evidence": [
2026-06-21T04:47:54.0053832Z             {
2026-06-21T04:47:54.0053957Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T04:47:54.0054041Z               "line": 18
2026-06-21T04:47:54.0054133Z             },
2026-06-21T04:47:54.0054220Z             {
2026-06-21T04:47:54.0054351Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T04:47:54.0054532Z               "line": 35
2026-06-21T04:47:54.0054626Z             },
2026-06-21T04:47:54.0054711Z             {
2026-06-21T04:47:54.0054835Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T04:47:54.0054921Z               "line": 72
2026-06-21T04:47:54.0055006Z             }
2026-06-21T04:47:54.0055092Z           ]
2026-06-21T04:47:54.0055178Z         },
2026-06-21T04:47:54.0055269Z         "int": {
2026-06-21T04:47:54.0055364Z           "complete": false,
2026-06-21T04:47:54.0055455Z           "evidence": []
2026-06-21T04:47:54.0055541Z         },
2026-06-21T04:47:54.0055627Z         "unit": {
2026-06-21T04:47:54.0055823Z           "complete": true,
2026-06-21T04:47:54.0055903Z           "evidence": [
2026-06-21T04:47:54.0055993Z             {
2026-06-21T04:47:54.0056113Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T04:47:54.0056208Z               "line": 239
2026-06-21T04:47:54.0056303Z             },
2026-06-21T04:47:54.0056394Z             {
2026-06-21T04:47:54.0056514Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T04:47:54.0056609Z               "line": 256
2026-06-21T04:47:54.0056694Z             },
2026-06-21T04:47:54.0056796Z             {
2026-06-21T04:47:54.0056899Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T04:47:54.0057005Z               "line": 265
2026-06-21T04:47:54.0057087Z             }
2026-06-21T04:47:54.0057167Z           ]
2026-06-21T04:47:54.0057256Z         }
2026-06-21T04:47:54.0057341Z       }
2026-06-21T04:47:54.0057428Z     },
2026-06-21T04:47:54.0057512Z     {
2026-06-21T04:47:54.0057625Z       "id": "REQ-SEAM-CAPABILITY",
2026-06-21T04:47:54.0057779Z       "title": "Hostable endpoint-types capability declaration",
2026-06-21T04:47:54.0057878Z       "requiredStages": [
2026-06-21T04:47:54.0057963Z         "impl",
2026-06-21T04:47:54.0058046Z         "unit"
2026-06-21T04:47:54.0058132Z       ],
2026-06-21T04:47:54.0058221Z       "stages": {
2026-06-21T04:47:54.0058307Z         "doc": {
2026-06-21T04:47:54.0058399Z           "complete": false,
2026-06-21T04:47:54.0058489Z           "evidence": []
2026-06-21T04:47:54.0058570Z         },
2026-06-21T04:47:54.0058656Z         "impl": {
2026-06-21T04:47:54.0058756Z           "complete": true,
2026-06-21T04:47:54.0058842Z           "evidence": [
2026-06-21T04:47:54.0058922Z             {
2026-06-21T04:47:54.0059113Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:54.0059214Z               "line": 598
2026-06-21T04:47:54.0059295Z             }
2026-06-21T04:47:54.0059376Z           ]
2026-06-21T04:47:54.0059466Z         },
2026-06-21T04:47:54.0059548Z         "int": {
2026-06-21T04:47:54.0059649Z           "complete": false,
2026-06-21T04:47:54.0059734Z           "evidence": []
2026-06-21T04:47:54.0059818Z         },
2026-06-21T04:47:54.0059904Z         "unit": {
2026-06-21T04:47:54.0059999Z           "complete": true,
2026-06-21T04:47:54.0060084Z           "evidence": [
2026-06-21T04:47:54.0060168Z             {
2026-06-21T04:47:54.0060298Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:54.0060379Z               "line": 967
2026-06-21T04:47:54.0060465Z             }
2026-06-21T04:47:54.0060550Z           ]
2026-06-21T04:47:54.0060632Z         }
2026-06-21T04:47:54.0060717Z       }
2026-06-21T04:47:54.0060798Z     },
2026-06-21T04:47:54.0060888Z     {
2026-06-21T04:47:54.0060984Z       "id": "REQ-SEAM-HISTORY",
2026-06-21T04:47:54.0061164Z       "title": "History subsystem (fetcher / locate-normalize / native store)",
2026-06-21T04:47:54.0061261Z       "requiredStages": [
2026-06-21T04:47:54.0061356Z         "impl",
2026-06-21T04:47:54.0061446Z         "unit",
2026-06-21T04:47:54.0061537Z         "int"
2026-06-21T04:47:54.0061619Z       ],
2026-06-21T04:47:54.0061709Z       "stages": {
2026-06-21T04:47:54.0061794Z         "doc": {
2026-06-21T04:47:54.0061887Z           "complete": false,
2026-06-21T04:47:54.0061976Z           "evidence": []
2026-06-21T04:47:54.0062172Z         },
2026-06-21T04:47:54.0062258Z         "impl": {
2026-06-21T04:47:54.0062357Z           "complete": true,
2026-06-21T04:47:54.0062443Z           "evidence": [
2026-06-21T04:47:54.0062526Z             {
2026-06-21T04:47:54.0062653Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T04:47:54.0062742Z               "line": 24
2026-06-21T04:47:54.0062833Z             },
2026-06-21T04:47:54.0062915Z             {
2026-06-21T04:47:54.0063042Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T04:47:54.0063133Z               "line": 22
2026-06-21T04:47:54.0063220Z             }
2026-06-21T04:47:54.0063297Z           ]
2026-06-21T04:47:54.0063482Z         },
2026-06-21T04:47:54.0063568Z         "int": {
2026-06-21T04:47:54.0063654Z           "complete": true,
2026-06-21T04:47:54.0063758Z           "evidence": [
2026-06-21T04:47:54.0063840Z             {
2026-06-21T04:47:54.0063964Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T04:47:54.0064054Z               "line": 260
2026-06-21T04:47:54.0064141Z             }
2026-06-21T04:47:54.0064226Z           ]
2026-06-21T04:47:54.0064311Z         },
2026-06-21T04:47:54.0064407Z         "unit": {
2026-06-21T04:47:54.0064503Z           "complete": true,
2026-06-21T04:47:54.0064601Z           "evidence": [
2026-06-21T04:47:54.0064678Z             {
2026-06-21T04:47:54.0064794Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T04:47:54.0064893Z               "line": 171
2026-06-21T04:47:54.0064978Z             },
2026-06-21T04:47:54.0065069Z             {
2026-06-21T04:47:54.0065182Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T04:47:54.0065281Z               "line": 200
2026-06-21T04:47:54.0065361Z             },
2026-06-21T04:47:54.0065443Z             {
2026-06-21T04:47:54.0065553Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T04:47:54.0065643Z               "line": 220
2026-06-21T04:47:54.0065729Z             },
2026-06-21T04:47:54.0065815Z             {
2026-06-21T04:47:54.0065943Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T04:47:54.0066034Z               "line": 199
2026-06-21T04:47:54.0066120Z             },
2026-06-21T04:47:54.0066210Z             {
2026-06-21T04:47:54.0066325Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T04:47:54.0066421Z               "line": 219
2026-06-21T04:47:54.0066507Z             },
2026-06-21T04:47:54.0066596Z             {
2026-06-21T04:47:54.0066707Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T04:47:54.0066787Z               "line": 244
2026-06-21T04:47:54.0066882Z             },
2026-06-21T04:47:54.0066969Z             {
2026-06-21T04:47:54.0067097Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T04:47:54.0067178Z               "line": 276
2026-06-21T04:47:54.0067269Z             },
2026-06-21T04:47:54.0067352Z             {
2026-06-21T04:47:54.0067473Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T04:47:54.0067550Z               "line": 297
2026-06-21T04:47:54.0067642Z             },
2026-06-21T04:47:54.0067741Z             {
2026-06-21T04:47:54.0067859Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T04:47:54.0067954Z               "line": 324
2026-06-21T04:47:54.0068045Z             }
2026-06-21T04:47:54.0068124Z           ]
2026-06-21T04:47:54.0068204Z         }
2026-06-21T04:47:54.0068291Z       }
2026-06-21T04:47:54.0068373Z     },
2026-06-21T04:47:54.0068458Z     {
2026-06-21T04:47:54.0068562Z       "id": "REQ-SEAM-INJECT",
2026-06-21T04:47:54.0068739Z       "title": "inject-input methods configurable per activity-state",
2026-06-21T04:47:54.0068834Z       "requiredStages": [
2026-06-21T04:47:54.0068921Z         "impl",
2026-06-21T04:47:54.0069120Z         "unit"
2026-06-21T04:47:54.0069202Z       ],
2026-06-21T04:47:54.0069284Z       "stages": {
2026-06-21T04:47:54.0069402Z         "doc": {
2026-06-21T04:47:54.0069550Z           "complete": false,
2026-06-21T04:47:54.0069678Z           "evidence": []
2026-06-21T04:47:54.0069951Z         },
2026-06-21T04:47:54.0070074Z         "impl": {
2026-06-21T04:47:54.0070214Z           "complete": true,
2026-06-21T04:47:54.0070331Z           "evidence": [
2026-06-21T04:47:54.0070464Z             {
2026-06-21T04:47:54.0070705Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T04:47:54.0070843Z               "line": 19
2026-06-21T04:47:54.0070973Z             },
2026-06-21T04:47:54.0071090Z             {
2026-06-21T04:47:54.0071273Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T04:47:54.0071400Z               "line": 111
2026-06-21T04:47:54.0071535Z             }
2026-06-21T04:47:54.0071788Z           ]
2026-06-21T04:47:54.0071893Z         },
2026-06-21T04:47:54.0072016Z         "int": {
2026-06-21T04:47:54.0072141Z           "complete": false,
2026-06-21T04:47:54.0072274Z           "evidence": []
2026-06-21T04:47:54.0072398Z         },
2026-06-21T04:47:54.0072527Z         "unit": {
2026-06-21T04:47:54.0072669Z           "complete": true,
2026-06-21T04:47:54.0072809Z           "evidence": [
2026-06-21T04:47:54.0072922Z             {
2026-06-21T04:47:54.0073100Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T04:47:54.0073236Z               "line": 345
2026-06-21T04:47:54.0073350Z             },
2026-06-21T04:47:54.0073480Z             {
2026-06-21T04:47:54.0073650Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T04:47:54.0073776Z               "line": 365
2026-06-21T04:47:54.0073899Z             }
2026-06-21T04:47:54.0074023Z           ]
2026-06-21T04:47:54.0074152Z         }
2026-06-21T04:47:54.0074256Z       }
2026-06-21T04:47:54.0074372Z     },
2026-06-21T04:47:54.0074485Z     {
2026-06-21T04:47:54.0074623Z       "id": "REQ-SEAM-POSTSPAWN",
2026-06-21T04:47:54.0074838Z       "title": "post-spawn / api bind seam with boot nonce",
2026-06-21T04:47:54.0074977Z       "requiredStages": [
2026-06-21T04:47:54.0075110Z         "impl",
2026-06-21T04:47:54.0075219Z         "unit"
2026-06-21T04:47:54.0075354Z       ],
2026-06-21T04:47:54.0075481Z       "stages": {
2026-06-21T04:47:54.0075599Z         "doc": {
2026-06-21T04:47:54.0075747Z           "complete": false,
2026-06-21T04:47:54.0075888Z           "evidence": []
2026-06-21T04:47:54.0076018Z         },
2026-06-21T04:47:54.0076141Z         "impl": {
2026-06-21T04:47:54.0076270Z           "complete": true,
2026-06-21T04:47:54.0076414Z           "evidence": [
2026-06-21T04:47:54.0076503Z             {
2026-06-21T04:47:54.0076638Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:54.0076728Z               "line": 18
2026-06-21T04:47:54.0076818Z             },
2026-06-21T04:47:54.0076905Z             {
2026-06-21T04:47:54.0077023Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:54.0077104Z               "line": 431
2026-06-21T04:47:54.0077190Z             }
2026-06-21T04:47:54.0077277Z           ]
2026-06-21T04:47:54.0077357Z         },
2026-06-21T04:47:54.0077447Z         "int": {
2026-06-21T04:47:54.0077549Z           "complete": false,
2026-06-21T04:47:54.0077644Z           "evidence": []
2026-06-21T04:47:54.0077734Z         },
2026-06-21T04:47:54.0077815Z         "unit": {
2026-06-21T04:47:54.0077921Z           "complete": true,
2026-06-21T04:47:54.0078015Z           "evidence": [
2026-06-21T04:47:54.0078106Z             {
2026-06-21T04:47:54.0078221Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:54.0078316Z               "line": 881
2026-06-21T04:47:54.0078410Z             },
2026-06-21T04:47:54.0078496Z             {
2026-06-21T04:47:54.0078614Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:54.0078708Z               "line": 891
2026-06-21T04:47:54.0078793Z             }
2026-06-21T04:47:54.0078880Z           ]
2026-06-21T04:47:54.0079027Z         }
2026-06-21T04:47:54.0079113Z       }
2026-06-21T04:47:54.0079195Z     },
2026-06-21T04:47:54.0079281Z     {
2026-06-21T04:47:54.0079385Z       "id": "REQ-SEAM-PSYCHE",
2026-06-21T04:47:54.0079538Z       "title": "spawn-psyche seam (fresh + resume templates)",
2026-06-21T04:47:54.0079776Z       "requiredStages": [
2026-06-21T04:47:54.0079863Z         "impl",
2026-06-21T04:47:54.0079948Z         "unit",
2026-06-21T04:47:54.0080033Z         "int"
2026-06-21T04:47:54.0080115Z       ],
2026-06-21T04:47:54.0080205Z       "stages": {
2026-06-21T04:47:54.0080300Z         "doc": {
2026-06-21T04:47:54.0080386Z           "complete": false,
2026-06-21T04:47:54.0080488Z           "evidence": []
2026-06-21T04:47:54.0080567Z         },
2026-06-21T04:47:54.0080653Z         "impl": {
2026-06-21T04:47:54.0080750Z           "complete": true,
2026-06-21T04:47:54.0080840Z           "evidence": [
2026-06-21T04:47:54.0081028Z             {
2026-06-21T04:47:54.0081148Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T04:47:54.0081246Z               "line": 19
2026-06-21T04:47:54.0081341Z             },
2026-06-21T04:47:54.0081428Z             {
2026-06-21T04:47:54.0081547Z               "path": "crates/spt/src/api/live.rs",
2026-06-21T04:47:54.0081641Z               "line": 12
2026-06-21T04:47:54.0081733Z             },
2026-06-21T04:47:54.0081805Z             {
2026-06-21T04:47:54.0081932Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:54.0082014Z               "line": 301
2026-06-21T04:47:54.0082100Z             }
2026-06-21T04:47:54.0082185Z           ]
2026-06-21T04:47:54.0082271Z         },
2026-06-21T04:47:54.0082353Z         "int": {
2026-06-21T04:47:54.0082438Z           "complete": true,
2026-06-21T04:47:54.0082524Z           "evidence": [
2026-06-21T04:47:54.0082619Z             {
2026-06-21T04:47:54.0082739Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T04:47:54.0082843Z               "line": 259
2026-06-21T04:47:54.0082924Z             }
2026-06-21T04:47:54.0083007Z           ]
2026-06-21T04:47:54.0083087Z         },
2026-06-21T04:47:54.0083167Z         "unit": {
2026-06-21T04:47:54.0083268Z           "complete": true,
2026-06-21T04:47:54.0083360Z           "evidence": [
2026-06-21T04:47:54.0083444Z             {
2026-06-21T04:47:54.0083559Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T04:47:54.0083646Z               "line": 195
2026-06-21T04:47:54.0083731Z             },
2026-06-21T04:47:54.0083825Z             {
2026-06-21T04:47:54.0083943Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T04:47:54.0084031Z               "line": 202
2026-06-21T04:47:54.0084125Z             },
2026-06-21T04:47:54.0084210Z             {
2026-06-21T04:47:54.0084331Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T04:47:54.0084407Z               "line": 225
2026-06-21T04:47:54.0084501Z             },
2026-06-21T04:47:54.0084588Z             {
2026-06-21T04:47:54.0084698Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T04:47:54.0084792Z               "line": 106
2026-06-21T04:47:54.0084879Z             },
2026-06-21T04:47:54.0084970Z             {
2026-06-21T04:47:54.0085074Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T04:47:54.0085174Z               "line": 137
2026-06-21T04:47:54.0085256Z             },
2026-06-21T04:47:54.0085341Z             {
2026-06-21T04:47:54.0085455Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T04:47:54.0085542Z               "line": 161
2026-06-21T04:47:54.0085623Z             }
2026-06-21T04:47:54.0085708Z           ]
2026-06-21T04:47:54.0085798Z         }
2026-06-21T04:47:54.0085886Z       }
2026-06-21T04:47:54.0085971Z     },
2026-06-21T04:47:54.0086051Z     {
2026-06-21T04:47:54.0086155Z       "id": "REQ-SEAM-RESUME",
2026-06-21T04:47:54.0086349Z       "title": "resume-session seam (fresh-with-preload / continue-existing)",
2026-06-21T04:47:54.0086453Z       "requiredStages": [
2026-06-21T04:47:54.0086553Z         "impl",
2026-06-21T04:47:54.0086645Z         "unit"
2026-06-21T04:47:54.0086729Z       ],
2026-06-21T04:47:54.0086825Z       "stages": {
2026-06-21T04:47:54.0086903Z         "doc": {
2026-06-21T04:47:54.0086997Z           "complete": false,
2026-06-21T04:47:54.0087165Z           "evidence": []
2026-06-21T04:47:54.0087260Z         },
2026-06-21T04:47:54.0087355Z         "impl": {
2026-06-21T04:47:54.0087445Z           "complete": true,
2026-06-21T04:47:54.0087532Z           "evidence": [
2026-06-21T04:47:54.0087617Z             {
2026-06-21T04:47:54.0087736Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T04:47:54.0087818Z               "line": 19
2026-06-21T04:47:54.0087903Z             }
2026-06-21T04:47:54.0087989Z           ]
2026-06-21T04:47:54.0088075Z         },
2026-06-21T04:47:54.0088166Z         "int": {
2026-06-21T04:47:54.0088260Z           "complete": false,
2026-06-21T04:47:54.0088424Z           "evidence": []
2026-06-21T04:47:54.0088505Z         },
2026-06-21T04:47:54.0088598Z         "unit": {
2026-06-21T04:47:54.0088695Z           "complete": true,
2026-06-21T04:47:54.0088786Z           "evidence": [
2026-06-21T04:47:54.0088881Z             {
2026-06-21T04:47:54.0089065Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T04:47:54.0089170Z               "line": 201
2026-06-21T04:47:54.0089254Z             },
2026-06-21T04:47:54.0089344Z             {
2026-06-21T04:47:54.0089464Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T04:47:54.0089555Z               "line": 223
2026-06-21T04:47:54.0089644Z             },
2026-06-21T04:47:54.0089726Z             {
2026-06-21T04:47:54.0089846Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T04:47:54.0089930Z               "line": 244
2026-06-21T04:47:54.0090022Z             }
2026-06-21T04:47:54.0090108Z           ]
2026-06-21T04:47:54.0090194Z         }
2026-06-21T04:47:54.0090278Z       }
2026-06-21T04:47:54.0090365Z     },
2026-06-21T04:47:54.0090451Z     {
2026-06-21T04:47:54.0093756Z       "id": "REQ-SEAM-SPAWN",
2026-06-21T04:47:54.0093906Z       "title": "spawn-session seam",
2026-06-21T04:47:54.0094013Z       "requiredStages": [
2026-06-21T04:47:54.0094095Z         "impl",
2026-06-21T04:47:54.0094182Z         "unit"
2026-06-21T04:47:54.0094277Z       ],
2026-06-21T04:47:54.0094366Z       "stages": {
2026-06-21T04:47:54.0094451Z         "doc": {
2026-06-21T04:47:54.0094552Z           "complete": false,
2026-06-21T04:47:54.0094652Z           "evidence": []
2026-06-21T04:47:54.0094733Z         },
2026-06-21T04:47:54.0094814Z         "impl": {
2026-06-21T04:47:54.0094900Z           "complete": true,
2026-06-21T04:47:54.0094995Z           "evidence": [
2026-06-21T04:47:54.0095085Z             {
2026-06-21T04:47:54.0095229Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T04:47:54.0095320Z               "line": 20
2026-06-21T04:47:54.0095400Z             }
2026-06-21T04:47:54.0095492Z           ]
2026-06-21T04:47:54.0095572Z         },
2026-06-21T04:47:54.0095663Z         "int": {
2026-06-21T04:47:54.0095758Z           "complete": false,
2026-06-21T04:47:54.0095859Z           "evidence": []
2026-06-21T04:47:54.0095949Z         },
2026-06-21T04:47:54.0096044Z         "unit": {
2026-06-21T04:47:54.0096146Z           "complete": true,
2026-06-21T04:47:54.0096240Z           "evidence": [
2026-06-21T04:47:54.0096330Z             {
2026-06-21T04:47:54.0096461Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T04:47:54.0096559Z               "line": 608
2026-06-21T04:47:54.0096644Z             },
2026-06-21T04:47:54.0096720Z             {
2026-06-21T04:47:54.0096848Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T04:47:54.0096928Z               "line": 615
2026-06-21T04:47:54.0097013Z             },
2026-06-21T04:47:54.0097100Z             {
2026-06-21T04:47:54.0097228Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T04:47:54.0097318Z               "line": 721
2026-06-21T04:47:54.0097405Z             },
2026-06-21T04:47:54.0097491Z             {
2026-06-21T04:47:54.0097605Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T04:47:54.0097695Z               "line": 727
2026-06-21T04:47:54.0097768Z             },
2026-06-21T04:47:54.0098001Z             {
2026-06-21T04:47:54.0098111Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T04:47:54.0098196Z               "line": 752
2026-06-21T04:47:54.0098286Z             },
2026-06-21T04:47:54.0098374Z             {
2026-06-21T04:47:54.0098496Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T04:47:54.0098582Z               "line": 789
2026-06-21T04:47:54.0098664Z             }
2026-06-21T04:47:54.0098755Z           ]
2026-06-21T04:47:54.0098830Z         }
2026-06-21T04:47:54.0098915Z       }
2026-06-21T04:47:54.0099102Z     },
2026-06-21T04:47:54.0099183Z     {
2026-06-21T04:47:54.0099274Z       "id": "REQ-SEAM-UPDATE",
2026-06-21T04:47:54.0099640Z       "title": "Adapter-update avenue (file-pull / delegated command)",
2026-06-21T04:47:54.0099744Z       "requiredStages": [
2026-06-21T04:47:54.0099828Z         "impl",
2026-06-21T04:47:54.0099914Z         "unit"
2026-06-21T04:47:54.0100000Z       ],
2026-06-21T04:47:54.0100082Z       "stages": {
2026-06-21T04:47:54.0100171Z         "doc": {
2026-06-21T04:47:54.0100262Z           "complete": false,
2026-06-21T04:47:54.0100354Z           "evidence": []
2026-06-21T04:47:54.0100434Z         },
2026-06-21T04:47:54.0100514Z         "impl": {
2026-06-21T04:47:54.0100606Z           "complete": true,
2026-06-21T04:47:54.0100706Z           "evidence": [
2026-06-21T04:47:54.0100796Z             {
2026-06-21T04:47:54.0100940Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T04:47:54.0101025Z               "line": 28
2026-06-21T04:47:54.0101106Z             },
2026-06-21T04:47:54.0101197Z             {
2026-06-21T04:47:54.0101326Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T04:47:54.0101426Z               "line": 88
2026-06-21T04:47:54.0101516Z             }
2026-06-21T04:47:54.0101603Z           ]
2026-06-21T04:47:54.0101683Z         },
2026-06-21T04:47:54.0101759Z         "int": {
2026-06-21T04:47:54.0101861Z           "complete": false,
2026-06-21T04:47:54.0101956Z           "evidence": []
2026-06-21T04:47:54.0102049Z         },
2026-06-21T04:47:54.0102130Z         "unit": {
2026-06-21T04:47:54.0102225Z           "complete": true,
2026-06-21T04:47:54.0102311Z           "evidence": [
2026-06-21T04:47:54.0102390Z             {
2026-06-21T04:47:54.0102524Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T04:47:54.0102610Z               "line": 326
2026-06-21T04:47:54.0102695Z             },
2026-06-21T04:47:54.0102781Z             {
2026-06-21T04:47:54.0102915Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T04:47:54.0103010Z               "line": 337
2026-06-21T04:47:54.0103091Z             }
2026-06-21T04:47:54.0103173Z           ]
2026-06-21T04:47:54.0103258Z         }
2026-06-21T04:47:54.0103348Z       }
2026-06-21T04:47:54.0103434Z     },
2026-06-21T04:47:54.0103521Z     {
2026-06-21T04:47:54.0103620Z       "id": "REQ-SEC-1",
2026-06-21T04:47:54.0104016Z       "title": "Per-endpoint access whitelist: origin-node gate, stateful-firewall (reply/outbound exempt), node-now/user-later, outer gate before grants",
2026-06-21T04:47:54.0104127Z       "requiredStages": [
2026-06-21T04:47:54.0104221Z         "impl",
2026-06-21T04:47:54.0104302Z         "unit"
2026-06-21T04:47:54.0104388Z       ],
2026-06-21T04:47:54.0104471Z       "stages": {
2026-06-21T04:47:54.0104564Z         "doc": {
2026-06-21T04:47:54.0104655Z           "complete": false,
2026-06-21T04:47:54.0104747Z           "evidence": []
2026-06-21T04:47:54.0104833Z         },
2026-06-21T04:47:54.0104926Z         "impl": {
2026-06-21T04:47:54.0105025Z           "complete": true,
2026-06-21T04:47:54.0105107Z           "evidence": [
2026-06-21T04:47:54.0105199Z             {
2026-06-21T04:47:54.0105317Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T04:47:54.0105408Z               "line": 86
2026-06-21T04:47:54.0105494Z             },
2026-06-21T04:47:54.0105579Z             {
2026-06-21T04:47:54.0105694Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T04:47:54.0105875Z               "line": 116
2026-06-21T04:47:54.0105965Z             },
2026-06-21T04:47:54.0106047Z             {
2026-06-21T04:47:54.0106175Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T04:47:54.0106265Z               "line": 130
2026-06-21T04:47:54.0106357Z             },
2026-06-21T04:47:54.0106452Z             {
2026-06-21T04:47:54.0106571Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T04:47:54.0106662Z               "line": 109
2026-06-21T04:47:54.0106748Z             },
2026-06-21T04:47:54.0106833Z             {
2026-06-21T04:47:54.0106948Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T04:47:54.0107105Z               "line": 130
2026-06-21T04:47:54.0107195Z             },
2026-06-21T04:47:54.0107275Z             {
2026-06-21T04:47:54.0107399Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T04:47:54.0107478Z               "line": 143
2026-06-21T04:47:54.0107568Z             },
2026-06-21T04:47:54.0107655Z             {
2026-06-21T04:47:54.0107765Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T04:47:54.0107850Z               "line": 209
2026-06-21T04:47:54.0107936Z             },
2026-06-21T04:47:54.0108018Z             {
2026-06-21T04:47:54.0108127Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T04:47:54.0108207Z               "line": 235
2026-06-21T04:47:54.0108295Z             },
2026-06-21T04:47:54.0108380Z             {
2026-06-21T04:47:54.0108484Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0108566Z               "line": 5295
2026-06-21T04:47:54.0108642Z             }
2026-06-21T04:47:54.0108733Z           ]
2026-06-21T04:47:54.0108813Z         },
2026-06-21T04:47:54.0108895Z         "int": {
2026-06-21T04:47:54.0109085Z           "complete": false,
2026-06-21T04:47:54.0109170Z           "evidence": []
2026-06-21T04:47:54.0109254Z         },
2026-06-21T04:47:54.0109338Z         "unit": {
2026-06-21T04:47:54.0109443Z           "complete": true,
2026-06-21T04:47:54.0109563Z           "evidence": [
2026-06-21T04:47:54.0109695Z             {
2026-06-21T04:47:54.0109893Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T04:47:54.0110024Z               "line": 142
2026-06-21T04:47:54.0110147Z             },
2026-06-21T04:47:54.0110276Z             {
2026-06-21T04:47:54.0110450Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T04:47:54.0110575Z               "line": 194
2026-06-21T04:47:54.0110689Z             },
2026-06-21T04:47:54.0110817Z             {
2026-06-21T04:47:54.0111008Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T04:47:54.0111152Z               "line": 235
2026-06-21T04:47:54.0111247Z             },
2026-06-21T04:47:54.0111337Z             {
2026-06-21T04:47:54.0111461Z               "path": "crates/spt-daemon/tests/access.rs",
2026-06-21T04:47:54.0111548Z               "line": 140
2026-06-21T04:47:54.0111623Z             },
2026-06-21T04:47:54.0111709Z             {
2026-06-21T04:47:54.0111815Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T04:47:54.0111910Z               "line": 247
2026-06-21T04:47:54.0111991Z             },
2026-06-21T04:47:54.0112077Z             {
2026-06-21T04:47:54.0112182Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T04:47:54.0112271Z               "line": 277
2026-06-21T04:47:54.0112362Z             },
2026-06-21T04:47:54.0112445Z             {
2026-06-21T04:47:54.0112558Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T04:47:54.0112647Z               "line": 310
2026-06-21T04:47:54.0112733Z             },
2026-06-21T04:47:54.0112824Z             {
2026-06-21T04:47:54.0112931Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T04:47:54.0113017Z               "line": 329
2026-06-21T04:47:54.0113089Z             },
2026-06-21T04:47:54.0113175Z             {
2026-06-21T04:47:54.0113288Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T04:47:54.0113489Z               "line": 362
2026-06-21T04:47:54.0113566Z             },
2026-06-21T04:47:54.0113651Z             {
2026-06-21T04:47:54.0113776Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T04:47:54.0113862Z               "line": 386
2026-06-21T04:47:54.0113941Z             },
2026-06-21T04:47:54.0114024Z             {
2026-06-21T04:47:54.0114124Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0114210Z               "line": 8296
2026-06-21T04:47:54.0114290Z             }
2026-06-21T04:47:54.0114372Z           ]
2026-06-21T04:47:54.0114453Z         }
2026-06-21T04:47:54.0114534Z       }
2026-06-21T04:47:54.0114624Z     },
2026-06-21T04:47:54.0114805Z     {
2026-06-21T04:47:54.0114910Z       "id": "REQ-SEND-SPT-HOSTED",
2026-06-21T04:47:54.0118687Z       "title": "An inbound `spt send` is DELIVERED to an spt-hosted endpoint (brought up via `spt endpoint run` → `api bind`, broker holds its PTY, NO `api listen` relay). Today cmd_bind→establish_perch (api/startup.rs ~441) writes info.json + ready marker + controllable=Some(true) but registers NO message-listener / NO address, so deliver.rs resolve_address→None→spool (deliver.rs:132-140) and the message NEVER reaches the live PTY — the endpoint reads 'online' (ready marker) yet `spt send` silently SPOOLS ('online but not deliverable' lie). Per CONTEXT:187-188 the daemon owns the PTY and delivers, manifest-configurable per activity-state (direct PTY injection / relay / HTTP). FIX: route an inbound send for an spt-hosted target through the daemon → broker InputReq → session.write_input PTY-inject (broker.rs dispatch_input/write_input ~988-1022), the same path the brain uses; the live-delivery handshake must report Sent (not Queued) and stop the spool-only fallback for a broker-hosted, PTY-resident endpoint. Detection is local: controllable==Some(true) + spt-hosted state + resolve_address==None. = the spt-core HALF of the wall-b finding (perri owns the adapter half: bind-hook fired-zero-perch + the missing endpoint-run int test). (post-v0.10.0)",
2026-06-21T04:47:54.0118801Z       "requiredStages": [
2026-06-21T04:47:54.0118883Z         "impl",
2026-06-21T04:47:54.0119054Z         "unit",
2026-06-21T04:47:54.0119136Z         "int"
2026-06-21T04:47:54.0119207Z       ],
2026-06-21T04:47:54.0119302Z       "stages": {
2026-06-21T04:47:54.0119392Z         "doc": {
2026-06-21T04:47:54.0119484Z           "complete": false,
2026-06-21T04:47:54.0119583Z           "evidence": []
2026-06-21T04:47:54.0119659Z         },
2026-06-21T04:47:54.0119745Z         "impl": {
2026-06-21T04:47:54.0119842Z           "complete": true,
2026-06-21T04:47:54.0119922Z           "evidence": [
2026-06-21T04:47:54.0120008Z             {
2026-06-21T04:47:54.0120133Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T04:47:54.0120232Z               "line": 1066
2026-06-21T04:47:54.0120308Z             },
2026-06-21T04:47:54.0120395Z             {
2026-06-21T04:47:54.0120523Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:54.0120617Z               "line": 1723
2026-06-21T04:47:54.0120707Z             },
2026-06-21T04:47:54.0120789Z             {
2026-06-21T04:47:54.0120896Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0120981Z               "line": 2850
2026-06-21T04:47:54.0121068Z             }
2026-06-21T04:47:54.0121154Z           ]
2026-06-21T04:47:54.0121239Z         },
2026-06-21T04:47:54.0121324Z         "int": {
2026-06-21T04:47:54.0121412Z           "complete": true,
2026-06-21T04:47:54.0121512Z           "evidence": [
2026-06-21T04:47:54.0121587Z             {
2026-06-21T04:47:54.0121722Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T04:47:54.0121817Z               "line": 189
2026-06-21T04:47:54.0121902Z             },
2026-06-21T04:47:54.0121978Z             {
2026-06-21T04:47:54.0122108Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T04:47:54.0122203Z               "line": 507
2026-06-21T04:47:54.0122278Z             }
2026-06-21T04:47:54.0122474Z           ]
2026-06-21T04:47:54.0122560Z         },
2026-06-21T04:47:54.0122642Z         "unit": {
2026-06-21T04:47:54.0122737Z           "complete": true,
2026-06-21T04:47:54.0122817Z           "evidence": [
2026-06-21T04:47:54.0122904Z             {
2026-06-21T04:47:54.0123019Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T04:47:54.0123114Z               "line": 952
2026-06-21T04:47:54.0123193Z             },
2026-06-21T04:47:54.0123279Z             {
2026-06-21T04:47:54.0123389Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0123477Z               "line": 7486
2026-06-21T04:47:54.0123558Z             }
2026-06-21T04:47:54.0123755Z           ]
2026-06-21T04:47:54.0123835Z         }
2026-06-21T04:47:54.0123920Z       }
2026-06-21T04:47:54.0124007Z     },
2026-06-21T04:47:54.0124093Z     {
2026-06-21T04:47:54.0124206Z       "id": "REQ-SESSION-RESUME-TEMPLATE",
2026-06-21T04:47:54.0131267Z       "title": "Resuming an endpoint session that HAS conversation history brings up a BLANK session. ROOT (doyle, code-grounded + CONTEXT — case-3 spt-core MISSING feature, NOT a perri docs-miss): CONTEXT L127-129 already defines the resume-session seam ('continue-existing: resume an existing harness session under the adapter — its NATIVE resume'), and the manifest already has the resume-variant pattern (Session has BOTH psyche_init AND psyche_resume, manifest.rs:217-219) — but the agent's own session has ONLY self_ (`[session.self]`, no resume sibling). cmd_endpoint_run (cli.rs:1304) re-passes the session_id through `[session.self]` on resume (resume.unwrap_or_else(mint_session_id)), so the adapter's FRESH command (e.g. `claude --session-id ..`) runs again instead of the harness NATIVE resume (`claude -r ..`) -> CC starts a fresh transcript -> blank. spt-core forwards session_id + cwd faithfully; it just has no way to express the native-resume invocation. SECOND GAP: CC resolves a transcript by session_id + cwd, but the session ledger records only {ts, session_id, trigger} (no cwd), so picker Resume-from-history (cross-project rows) can't restore the right cwd. FIX (doyle design, V0.13.0-P2-SESSION-RESUME-DESIGN.md, mirrors psyche_init->psyche_resume exactly): (A) add a `[session.resume]` role (resume: Option<SessionRole> on Session + roles()/is_empty()); cmd_endpoint_run selects it when --resume is set AND it's declared (fill {id}/{session_id}=resumed id/{session_name} + the resume cwd), else FALL BACK to `[session.self]` (full back-compat). (B) record cwd PER ledger row (operator ruling): {ts, session_id, trigger, cwd} additive serde-default; resume cwd = resumed row cwd -> else perch info.cwd -> else current_dir (back-compat for old rows + single-project endpoints); picker threads the selected row's cwd through Outcome::Run -> cmd_endpoint_run. (C) public docs (MANIFEST + harness-contract) teach `[session.resume]` so perri builds the adapter side BLIND. Adapter follow-on (perri, AFTER spt-core ships+docs): declare `[session.resume] command = claude -r {session_id} --remote-control {id} --dangerously-skip-permissions` from the resume cwd. Completes REQ-READY-AGENT-RESUME / REQ-RUN-PICKER resume-from-history. (v0.13.0)",
2026-06-21T04:47:54.0131410Z       "requiredStages": [
2026-06-21T04:47:54.0131499Z         "doc",
2026-06-21T04:47:54.0131570Z         "impl",
2026-06-21T04:47:54.0131666Z         "unit",
2026-06-21T04:47:54.0131748Z         "int"
2026-06-21T04:47:54.0131837Z       ],
2026-06-21T04:47:54.0131923Z       "stages": {
2026-06-21T04:47:54.0132015Z         "doc": {
2026-06-21T04:47:54.0132114Z           "complete": true,
2026-06-21T04:47:54.0132204Z           "evidence": [
2026-06-21T04:47:54.0132287Z             {
2026-06-21T04:47:54.0132443Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-21T04:47:54.0132538Z               "line": 130
2026-06-21T04:47:54.0132621Z             },
2026-06-21T04:47:54.0132705Z             {
2026-06-21T04:47:54.0132806Z               "path": "docs/MANIFEST.md",
2026-06-21T04:47:54.0132892Z               "line": 96
2026-06-21T04:47:54.0133077Z             }
2026-06-21T04:47:54.0133192Z           ]
2026-06-21T04:47:54.0133293Z         },
2026-06-21T04:47:54.0133377Z         "impl": {
2026-06-21T04:47:54.0133464Z           "complete": true,
2026-06-21T04:47:54.0133555Z           "evidence": [
2026-06-21T04:47:54.0133641Z             {
2026-06-21T04:47:54.0133767Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T04:47:54.0133858Z               "line": 77
2026-06-21T04:47:54.0133944Z             },
2026-06-21T04:47:54.0134033Z             {
2026-06-21T04:47:54.0134161Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T04:47:54.0134252Z               "line": 183
2026-06-21T04:47:54.0134427Z             },
2026-06-21T04:47:54.0134514Z             {
2026-06-21T04:47:54.0134638Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:54.0134738Z               "line": 222
2026-06-21T04:47:54.0134824Z             },
2026-06-21T04:47:54.0134901Z             {
2026-06-21T04:47:54.0135029Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T04:47:54.0135100Z               "line": 71
2026-06-21T04:47:54.0135187Z             },
2026-06-21T04:47:54.0135263Z             {
2026-06-21T04:47:54.0135391Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T04:47:54.0135488Z               "line": 176
2026-06-21T04:47:54.0135568Z             }
2026-06-21T04:47:54.0135659Z           ]
2026-06-21T04:47:54.0135744Z         },
2026-06-21T04:47:54.0135826Z         "int": {
2026-06-21T04:47:54.0135911Z           "complete": true,
2026-06-21T04:47:54.0136007Z           "evidence": [
2026-06-21T04:47:54.0136093Z             {
2026-06-21T04:47:54.0136231Z               "path": "crates/spt/tests/resume_template_e2e.rs",
2026-06-21T04:47:54.0136326Z               "line": 25
2026-06-21T04:47:54.0136408Z             }
2026-06-21T04:47:54.0136494Z           ]
2026-06-21T04:47:54.0136578Z         },
2026-06-21T04:47:54.0136668Z         "unit": {
2026-06-21T04:47:54.0136778Z           "complete": true,
2026-06-21T04:47:54.0136870Z           "evidence": [
2026-06-21T04:47:54.0136954Z             {
2026-06-21T04:47:54.0137069Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T04:47:54.0137160Z               "line": 341
2026-06-21T04:47:54.0137246Z             },
2026-06-21T04:47:54.0137331Z             {
2026-06-21T04:47:54.0137466Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T04:47:54.0137551Z               "line": 391
2026-06-21T04:47:54.0137636Z             },
2026-06-21T04:47:54.0137723Z             {
2026-06-21T04:47:54.0137855Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:54.0137945Z               "line": 1244
2026-06-21T04:47:54.0138038Z             },
2026-06-21T04:47:54.0138128Z             {
2026-06-21T04:47:54.0138242Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T04:47:54.0138333Z               "line": 184
2026-06-21T04:47:54.0138419Z             },
2026-06-21T04:47:54.0138503Z             {
2026-06-21T04:47:54.0138624Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T04:47:54.0138715Z               "line": 208
2026-06-21T04:47:54.0138804Z             },
2026-06-21T04:47:54.0138889Z             {
2026-06-21T04:47:54.0139099Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T04:47:54.0139178Z               "line": 236
2026-06-21T04:47:54.0139258Z             },
2026-06-21T04:47:54.0139345Z             {
2026-06-21T04:47:54.0139492Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T04:47:54.0139583Z               "line": 945
2026-06-21T04:47:54.0139664Z             }
2026-06-21T04:47:54.0139755Z           ]
2026-06-21T04:47:54.0139840Z         }
2026-06-21T04:47:54.0139926Z       }
2026-06-21T04:47:54.0140004Z     },
2026-06-21T04:47:54.0140132Z     {
2026-06-21T04:47:54.0140266Z       "id": "REQ-SHELL-1",
2026-06-21T04:47:54.0141428Z       "title": "Shell hosting machinery: shell perch under the owner (type/owner/adapter_name/status/alias), broker-launched binary + api bind local-link handshake, the three channels (command durable, text+file durable + progress-queryable, sensory REST-only never spooled + dropped-unless-owner-live), owner exclusivity (CONTEXT Shell model)",
2026-06-21T04:47:54.0141648Z       "requiredStages": [
2026-06-21T04:47:54.0141737Z         "impl",
2026-06-21T04:47:54.0141822Z         "unit",
2026-06-21T04:47:54.0141914Z         "int"
2026-06-21T04:47:54.0142003Z       ],
2026-06-21T04:47:54.0142097Z       "stages": {
2026-06-21T04:47:54.0142179Z         "doc": {
2026-06-21T04:47:54.0142279Z           "complete": false,
2026-06-21T04:47:54.0142454Z           "evidence": []
2026-06-21T04:47:54.0142547Z         },
2026-06-21T04:47:54.0142627Z         "impl": {
2026-06-21T04:47:54.0142717Z           "complete": true,
2026-06-21T04:47:54.0142798Z           "evidence": [
2026-06-21T04:47:54.0142876Z             {
2026-06-21T04:47:54.0143003Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T04:47:54.0143098Z               "line": 189
2026-06-21T04:47:54.0143186Z             },
2026-06-21T04:47:54.0143275Z             {
2026-06-21T04:47:54.0143385Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T04:47:54.0143471Z               "line": 268
2026-06-21T04:47:54.0143557Z             },
2026-06-21T04:47:54.0143642Z             {
2026-06-21T04:47:54.0143772Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T04:47:54.0143862Z               "line": 27
2026-06-21T04:47:54.0143952Z             },
2026-06-21T04:47:54.0144029Z             {
2026-06-21T04:47:54.0144159Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T04:47:54.0144248Z               "line": 52
2026-06-21T04:47:54.0144342Z             },
2026-06-21T04:47:54.0144428Z             {
2026-06-21T04:47:54.0144555Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T04:47:54.0144650Z               "line": 144
2026-06-21T04:47:54.0144736Z             },
2026-06-21T04:47:54.0144827Z             {
2026-06-21T04:47:54.0144941Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T04:47:54.0145036Z               "line": 176
2026-06-21T04:47:54.0145122Z             },
2026-06-21T04:47:54.0145213Z             {
2026-06-21T04:47:54.0145341Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T04:47:54.0145428Z               "line": 22
2026-06-21T04:47:54.0145518Z             },
2026-06-21T04:47:54.0145594Z             {
2026-06-21T04:47:54.0145719Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T04:47:54.0145814Z               "line": 65
2026-06-21T04:47:54.0145909Z             },
2026-06-21T04:47:54.0145999Z             {
2026-06-21T04:47:54.0146119Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T04:47:54.0146214Z               "line": 76
2026-06-21T04:47:54.0146304Z             },
2026-06-21T04:47:54.0146401Z             {
2026-06-21T04:47:54.0146528Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T04:47:54.0146619Z               "line": 151
2026-06-21T04:47:54.0146711Z             },
2026-06-21T04:47:54.0146795Z             {
2026-06-21T04:47:54.0146924Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T04:47:54.0147007Z               "line": 210
2026-06-21T04:47:54.0147092Z             },
2026-06-21T04:47:54.0147176Z             {
2026-06-21T04:47:54.0147304Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T04:47:54.0147396Z               "line": 259
2026-06-21T04:47:54.0147477Z             },
2026-06-21T04:47:54.0147562Z             {
2026-06-21T04:47:54.0147682Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T04:47:54.0147782Z               "line": 281
2026-06-21T04:47:54.0147857Z             },
2026-06-21T04:47:54.0147944Z             {
2026-06-21T04:47:54.0148063Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T04:47:54.0148153Z               "line": 294
2026-06-21T04:47:54.0148311Z             },
2026-06-21T04:47:54.0148392Z             {
2026-06-21T04:47:54.0148520Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:54.0148612Z               "line": 217
2026-06-21T04:47:54.0148698Z             },
2026-06-21T04:47:54.0148783Z             {
2026-06-21T04:47:54.0148893Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:54.0149107Z               "line": 233
2026-06-21T04:47:54.0149193Z             },
2026-06-21T04:47:54.0149275Z             {
2026-06-21T04:47:54.0149402Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T04:47:54.0149492Z               "line": 41
2026-06-21T04:47:54.0149682Z             },
2026-06-21T04:47:54.0149771Z             {
2026-06-21T04:47:54.0149895Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T04:47:54.0149992Z               "line": 222
2026-06-21T04:47:54.0150067Z             },
2026-06-21T04:47:54.0150152Z             {
2026-06-21T04:47:54.0150273Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T04:47:54.0150377Z               "line": 173
2026-06-21T04:47:54.0150458Z             },
2026-06-21T04:47:54.0150549Z             {
2026-06-21T04:47:54.0150668Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T04:47:54.0150767Z               "line": 354
2026-06-21T04:47:54.0150869Z             },
2026-06-21T04:47:54.0150944Z             {
2026-06-21T04:47:54.0151053Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T04:47:54.0151145Z               "line": 419
2026-06-21T04:47:54.0151236Z             },
2026-06-21T04:47:54.0151312Z             {
2026-06-21T04:47:54.0151435Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:54.0151542Z               "line": 333
2026-06-21T04:47:54.0151621Z             },
2026-06-21T04:47:54.0151707Z             {
2026-06-21T04:47:54.0151818Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0151908Z               "line": 6320
2026-06-21T04:47:54.0151994Z             },
2026-06-21T04:47:54.0152080Z             {
2026-06-21T04:47:54.0152186Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0152274Z               "line": 6470
2026-06-21T04:47:54.0152355Z             },
2026-06-21T04:47:54.0152441Z             {
2026-06-21T04:47:54.0152549Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0152648Z               "line": 6646
2026-06-21T04:47:54.0152734Z             }
2026-06-21T04:47:54.0152820Z           ]
2026-06-21T04:47:54.0152906Z         },
2026-06-21T04:47:54.0152991Z         "int": {
2026-06-21T04:47:54.0153087Z           "complete": true,
2026-06-21T04:47:54.0153187Z           "evidence": [
2026-06-21T04:47:54.0153282Z             {
2026-06-21T04:47:54.0153417Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T04:47:54.0153506Z               "line": 713
2026-06-21T04:47:54.0153592Z             },
2026-06-21T04:47:54.0153678Z             {
2026-06-21T04:47:54.0153812Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T04:47:54.0153893Z               "line": 8
2026-06-21T04:47:54.0153983Z             },
2026-06-21T04:47:54.0154065Z             {
2026-06-21T04:47:54.0154192Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T04:47:54.0154274Z               "line": 49
2026-06-21T04:47:54.0154356Z             },
2026-06-21T04:47:54.0154441Z             {
2026-06-21T04:47:54.0154574Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T04:47:54.0154675Z               "line": 778
2026-06-21T04:47:54.0154752Z             },
2026-06-21T04:47:54.0154841Z             {
2026-06-21T04:47:54.0154959Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T04:47:54.0155064Z               "line": 1213
2026-06-21T04:47:54.0155153Z             },
2026-06-21T04:47:54.0155238Z             {
2026-06-21T04:47:54.0155363Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T04:47:54.0155444Z               "line": 17
2026-06-21T04:47:54.0155649Z             },
2026-06-21T04:47:54.0155730Z             {
2026-06-21T04:47:54.0155844Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T04:47:54.0155935Z               "line": 14
2026-06-21T04:47:54.0156016Z             }
2026-06-21T04:47:54.0156107Z           ]
2026-06-21T04:47:54.0156192Z         },
2026-06-21T04:47:54.0156279Z         "unit": {
2026-06-21T04:47:54.0156374Z           "complete": true,
2026-06-21T04:47:54.0156469Z           "evidence": [
2026-06-21T04:47:54.0156564Z             {
2026-06-21T04:47:54.0156688Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T04:47:54.0156774Z               "line": 246
2026-06-21T04:47:54.0156918Z             },
2026-06-21T04:47:54.0156998Z             {
2026-06-21T04:47:54.0157117Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T04:47:54.0157214Z               "line": 279
2026-06-21T04:47:54.0157290Z             },
2026-06-21T04:47:54.0157374Z             {
2026-06-21T04:47:54.0157509Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T04:47:54.0157596Z               "line": 319
2026-06-21T04:47:54.0157684Z             },
2026-06-21T04:47:54.0157769Z             {
2026-06-21T04:47:54.0157894Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T04:47:54.0157980Z               "line": 599
2026-06-21T04:47:54.0158070Z             },
2026-06-21T04:47:54.0158156Z             {
2026-06-21T04:47:54.0158266Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T04:47:54.0158361Z               "line": 672
2026-06-21T04:47:54.0158441Z             },
2026-06-21T04:47:54.0158524Z             {
2026-06-21T04:47:54.0158643Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T04:47:54.0158733Z               "line": 816
2026-06-21T04:47:54.0158814Z             },
2026-06-21T04:47:54.0158895Z             {
2026-06-21T04:47:54.0159114Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:54.0159201Z               "line": 595
2026-06-21T04:47:54.0159286Z             },
2026-06-21T04:47:54.0159377Z             {
2026-06-21T04:47:54.0159492Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T04:47:54.0159577Z               "line": 399
2026-06-21T04:47:54.0159662Z             },
2026-06-21T04:47:54.0159749Z             {
2026-06-21T04:47:54.0159850Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0159953Z               "line": 8976
2026-06-21T04:47:54.0160033Z             },
2026-06-21T04:47:54.0160114Z             {
2026-06-21T04:47:54.0160223Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0160312Z               "line": 9300
2026-06-21T04:47:54.0160412Z             },
2026-06-21T04:47:54.0160499Z             {
2026-06-21T04:47:54.0160613Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0160708Z               "line": 9717
2026-06-21T04:47:54.0160789Z             }
2026-06-21T04:47:54.0160880Z           ]
2026-06-21T04:47:54.0160961Z         }
2026-06-21T04:47:54.0161042Z       }
2026-06-21T04:47:54.0161119Z     },
2026-06-21T04:47:54.0161209Z     {
2026-06-21T04:47:54.0161313Z       "id": "REQ-SHELL-2",
2026-06-21T04:47:54.0162957Z       "title": "Shell sleep/wake: link-break always closes the binary (pre-close instruction + termination timeout), ephemeral teardown vs persistent offline/relink, wake_command wake-watcher (offline-only, exit-opcode supervision, exponential backoff + give-up), state-keyed wake resolution (dormant/suspended/active-elsewhere; no-reachable refuses — spawn-anywhere branch deferred), spt shutdown owner cascade + api owner-shutdown gated by can_shutdown (CONTEXT Shell sleep/wake)",
2026-06-21T04:47:54.0163072Z       "requiredStages": [
2026-06-21T04:47:54.0163165Z         "impl",
2026-06-21T04:47:54.0163251Z         "unit",
2026-06-21T04:47:54.0163337Z         "int"
2026-06-21T04:47:54.0163414Z       ],
2026-06-21T04:47:54.0163499Z       "stages": {
2026-06-21T04:47:54.0163580Z         "doc": {
2026-06-21T04:47:54.0163786Z           "complete": false,
2026-06-21T04:47:54.0163885Z           "evidence": []
2026-06-21T04:47:54.0163958Z         },
2026-06-21T04:47:54.0164052Z         "impl": {
2026-06-21T04:47:54.0164134Z           "complete": true,
2026-06-21T04:47:54.0164224Z           "evidence": [
2026-06-21T04:47:54.0164301Z             {
2026-06-21T04:47:54.0164434Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:54.0164534Z               "line": 217
2026-06-21T04:47:54.0164616Z             },
2026-06-21T04:47:54.0164706Z             {
2026-06-21T04:47:54.0164834Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T04:47:54.0164935Z               "line": 403
2026-06-21T04:47:54.0165125Z             },
2026-06-21T04:47:54.0165217Z             {
2026-06-21T04:47:54.0165345Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T04:47:54.0165434Z               "line": 250
2026-06-21T04:47:54.0165524Z             },
2026-06-21T04:47:54.0165606Z             {
2026-06-21T04:47:54.0165727Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:54.0165817Z               "line": 403
2026-06-21T04:47:54.0165904Z             },
2026-06-21T04:47:54.0165986Z             {
2026-06-21T04:47:54.0166108Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T04:47:54.0166204Z               "line": 30
2026-06-21T04:47:54.0166290Z             },
2026-06-21T04:47:54.0166385Z             {
2026-06-21T04:47:54.0166505Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T04:47:54.0166600Z               "line": 409
2026-06-21T04:47:54.0166690Z             },
2026-06-21T04:47:54.0166776Z             {
2026-06-21T04:47:54.0166901Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T04:47:54.0166991Z               "line": 445
2026-06-21T04:47:54.0167077Z             },
2026-06-21T04:47:54.0167163Z             {
2026-06-21T04:47:54.0167281Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T04:47:54.0167386Z               "line": 660
2026-06-21T04:47:54.0167473Z             },
2026-06-21T04:47:54.0167559Z             {
2026-06-21T04:47:54.0167677Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T04:47:54.0167769Z               "line": 348
2026-06-21T04:47:54.0167851Z             },
2026-06-21T04:47:54.0167934Z             {
2026-06-21T04:47:54.0168054Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T04:47:54.0168141Z               "line": 115
2026-06-21T04:47:54.0168221Z             },
2026-06-21T04:47:54.0168306Z             {
2026-06-21T04:47:54.0168416Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T04:47:54.0168516Z               "line": 120
2026-06-21T04:47:54.0168601Z             },
2026-06-21T04:47:54.0168687Z             {
2026-06-21T04:47:54.0168798Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T04:47:54.0168893Z               "line": 374
2026-06-21T04:47:54.0169064Z             },
2026-06-21T04:47:54.0169150Z             {
2026-06-21T04:47:54.0169278Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T04:47:54.0169370Z               "line": 500
2026-06-21T04:47:54.0169455Z             },
2026-06-21T04:47:54.0169536Z             {
2026-06-21T04:47:54.0169659Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T04:47:54.0169743Z               "line": 24
2026-06-21T04:47:54.0169827Z             },
2026-06-21T04:47:54.0169917Z             {
2026-06-21T04:47:54.0170038Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T04:47:54.0170137Z               "line": 76
2026-06-21T04:47:54.0170222Z             },
2026-06-21T04:47:54.0170318Z             {
2026-06-21T04:47:54.0170438Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T04:47:54.0170532Z               "line": 154
2026-06-21T04:47:54.0170613Z             },
2026-06-21T04:47:54.0170699Z             {
2026-06-21T04:47:54.0170830Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T04:47:54.0171016Z               "line": 177
2026-06-21T04:47:54.0171107Z             },
2026-06-21T04:47:54.0171188Z             {
2026-06-21T04:47:54.0171311Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T04:47:54.0171408Z               "line": 273
2026-06-21T04:47:54.0171493Z             },
2026-06-21T04:47:54.0174627Z             {
2026-06-21T04:47:54.0174789Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T04:47:54.0174894Z               "line": 456
2026-06-21T04:47:54.0174979Z             },
2026-06-21T04:47:54.0175070Z             {
2026-06-21T04:47:54.0175200Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T04:47:54.0175428Z               "line": 538
2026-06-21T04:47:54.0175514Z             },
2026-06-21T04:47:54.0175600Z             {
2026-06-21T04:47:54.0175728Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T04:47:54.0175815Z               "line": 27
2026-06-21T04:47:54.0175905Z             },
2026-06-21T04:47:54.0175989Z             {
2026-06-21T04:47:54.0176104Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T04:47:54.0176199Z               "line": 48
2026-06-21T04:47:54.0176283Z             },
2026-06-21T04:47:54.0176373Z             {
2026-06-21T04:47:54.0176493Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:54.0176593Z               "line": 517
2026-06-21T04:47:54.0176692Z             },
2026-06-21T04:47:54.0176774Z             {
2026-06-21T04:47:54.0176889Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0176983Z               "line": 1921
2026-06-21T04:47:54.0177070Z             },
2026-06-21T04:47:54.0177165Z             {
2026-06-21T04:47:54.0177265Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0177355Z               "line": 6334
2026-06-21T04:47:54.0177442Z             },
2026-06-21T04:47:54.0177527Z             {
2026-06-21T04:47:54.0177632Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0177728Z               "line": 6395
2026-06-21T04:47:54.0177818Z             },
2026-06-21T04:47:54.0177904Z             {
2026-06-21T04:47:54.0178009Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0178091Z               "line": 6423
2026-06-21T04:47:54.0178180Z             },
2026-06-21T04:47:54.0178261Z             {
2026-06-21T04:47:54.0178372Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0178457Z               "line": 6477
2026-06-21T04:47:54.0178543Z             },
2026-06-21T04:47:54.0178629Z             {
2026-06-21T04:47:54.0178735Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0178833Z               "line": 6732
2026-06-21T04:47:54.0178914Z             },
2026-06-21T04:47:54.0179091Z             {
2026-06-21T04:47:54.0179199Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0179285Z               "line": 6792
2026-06-21T04:47:54.0179372Z             },
2026-06-21T04:47:54.0179476Z             {
2026-06-21T04:47:54.0179590Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T04:47:54.0179678Z               "line": 298
2026-06-21T04:47:54.0179758Z             },
2026-06-21T04:47:54.0179853Z             {
2026-06-21T04:47:54.0179958Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T04:47:54.0180049Z               "line": 339
2026-06-21T04:47:54.0180134Z             }
2026-06-21T04:47:54.0180215Z           ]
2026-06-21T04:47:54.0180293Z         },
2026-06-21T04:47:54.0180373Z         "int": {
2026-06-21T04:47:54.0180463Z           "complete": true,
2026-06-21T04:47:54.0180549Z           "evidence": [
2026-06-21T04:47:54.0180632Z             {
2026-06-21T04:47:54.0180759Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T04:47:54.0180850Z               "line": 706
2026-06-21T04:47:54.0180937Z             },
2026-06-21T04:47:54.0181012Z             {
2026-06-21T04:47:54.0181139Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T04:47:54.0181225Z               "line": 778
2026-06-21T04:47:54.0181419Z             },
2026-06-21T04:47:54.0181504Z             {
2026-06-21T04:47:54.0181629Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T04:47:54.0181719Z               "line": 1213
2026-06-21T04:47:54.0181799Z             },
2026-06-21T04:47:54.0181891Z             {
2026-06-21T04:47:54.0182019Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-21T04:47:54.0182119Z               "line": 18
2026-06-21T04:47:54.0182206Z             }
2026-06-21T04:47:54.0182287Z           ]
2026-06-21T04:47:54.0182376Z         },
2026-06-21T04:47:54.0182462Z         "unit": {
2026-06-21T04:47:54.0182654Z           "complete": true,
2026-06-21T04:47:54.0182744Z           "evidence": [
2026-06-21T04:47:54.0182830Z             {
2026-06-21T04:47:54.0182954Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T04:47:54.0183044Z               "line": 744
2026-06-21T04:47:54.0183131Z             },
2026-06-21T04:47:54.0183203Z             {
2026-06-21T04:47:54.0183335Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T04:47:54.0183416Z               "line": 796
2026-06-21T04:47:54.0183504Z             },
2026-06-21T04:47:54.0183574Z             {
2026-06-21T04:47:54.0183693Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T04:47:54.0183789Z               "line": 705
2026-06-21T04:47:54.0183875Z             },
2026-06-21T04:47:54.0183964Z             {
2026-06-21T04:47:54.0184092Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T04:47:54.0184178Z               "line": 754
2026-06-21T04:47:54.0184267Z             },
2026-06-21T04:47:54.0184352Z             {
2026-06-21T04:47:54.0184476Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T04:47:54.0184563Z               "line": 778
2026-06-21T04:47:54.0184652Z             },
2026-06-21T04:47:54.0184733Z             {
2026-06-21T04:47:54.0184863Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T04:47:54.0184958Z               "line": 603
2026-06-21T04:47:54.0185044Z             },
2026-06-21T04:47:54.0185130Z             {
2026-06-21T04:47:54.0185249Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T04:47:54.0185334Z               "line": 624
2026-06-21T04:47:54.0185421Z             },
2026-06-21T04:47:54.0185516Z             {
2026-06-21T04:47:54.0185625Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T04:47:54.0185712Z               "line": 660
2026-06-21T04:47:54.0185798Z             },
2026-06-21T04:47:54.0185882Z             {
2026-06-21T04:47:54.0186007Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T04:47:54.0186103Z               "line": 714
2026-06-21T04:47:54.0186192Z             },
2026-06-21T04:47:54.0186278Z             {
2026-06-21T04:47:54.0186399Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T04:47:54.0186498Z               "line": 732
2026-06-21T04:47:54.0186583Z             },
2026-06-21T04:47:54.0186669Z             {
2026-06-21T04:47:54.0186792Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T04:47:54.0186890Z               "line": 766
2026-06-21T04:47:54.0186976Z             },
2026-06-21T04:47:54.0187068Z             {
2026-06-21T04:47:54.0187186Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T04:47:54.0187267Z               "line": 841
2026-06-21T04:47:54.0187349Z             },
2026-06-21T04:47:54.0187434Z             {
2026-06-21T04:47:54.0187562Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T04:47:54.0187654Z               "line": 85
2026-06-21T04:47:54.0187749Z             },
2026-06-21T04:47:54.0187839Z             {
2026-06-21T04:47:54.0187945Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0188035Z               "line": 8044
2026-06-21T04:47:54.0188121Z             },
2026-06-21T04:47:54.0188197Z             {
2026-06-21T04:47:54.0188298Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0188483Z               "line": 9054
2026-06-21T04:47:54.0188569Z             },
2026-06-21T04:47:54.0188656Z             {
2026-06-21T04:47:54.0188759Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0188845Z               "line": 9124
2026-06-21T04:47:54.0188932Z             },
2026-06-21T04:47:54.0189103Z             {
2026-06-21T04:47:54.0189194Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0189290Z               "line": 9162
2026-06-21T04:47:54.0189374Z             }
2026-06-21T04:47:54.0189464Z           ]
2026-06-21T04:47:54.0189550Z         }
2026-06-21T04:47:54.0189632Z       }
2026-06-21T04:47:54.0189812Z     },
2026-06-21T04:47:54.0189893Z     {
2026-06-21T04:47:54.0189989Z       "id": "REQ-SHELL-3",
2026-06-21T04:47:54.0191866Z       "title": "Drive channel (owner->shell, REST-only, never-spooled, latest-wins): the owner->shell mirror of sensory for continuous real-time control (scroll/crank/stick/avatar) — a [shell.drive] manifest vocab + EVENT_TYPE_DRIVE frame, delivered to the ONLINE binary only via a single live slot (a new frame supersedes an undelivered one — no spool, no queue, no replay on relink), dropped-with-diagnostic if the shell is offline; cross-node rides the ephemeral link (REST class), never the durable shell spool. Commands = discrete+durable; drive = continuous+ephemeral (CONTEXT:260, minted 2026-06-11 Gateway grill).",
2026-06-21T04:47:54.0191979Z       "requiredStages": [
2026-06-21T04:47:54.0192059Z         "impl",
2026-06-21T04:47:54.0192146Z         "unit",
2026-06-21T04:47:54.0192232Z         "int"
2026-06-21T04:47:54.0192317Z       ],
2026-06-21T04:47:54.0192408Z       "stages": {
2026-06-21T04:47:54.0192499Z         "doc": {
2026-06-21T04:47:54.0192598Z           "complete": false,
2026-06-21T04:47:54.0192693Z           "evidence": []
2026-06-21T04:47:54.0192776Z         },
2026-06-21T04:47:54.0192856Z         "impl": {
2026-06-21T04:47:54.0192951Z           "complete": true,
2026-06-21T04:47:54.0193037Z           "evidence": [
2026-06-21T04:47:54.0193124Z             {
2026-06-21T04:47:54.0193251Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:54.0193342Z               "line": 229
2026-06-21T04:47:54.0193429Z             },
2026-06-21T04:47:54.0193519Z             {
2026-06-21T04:47:54.0193647Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T04:47:54.0193735Z               "line": 36
2026-06-21T04:47:54.0193819Z             },
2026-06-21T04:47:54.0193905Z             {
2026-06-21T04:47:54.0194030Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T04:47:54.0194111Z               "line": 137
2026-06-21T04:47:54.0194200Z             },
2026-06-21T04:47:54.0194282Z             {
2026-06-21T04:47:54.0194407Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T04:47:54.0194496Z               "line": 153
2026-06-21T04:47:54.0194576Z             },
2026-06-21T04:47:54.0194662Z             {
2026-06-21T04:47:54.0194771Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T04:47:54.0194860Z               "line": 165
2026-06-21T04:47:54.0194936Z             },
2026-06-21T04:47:54.0195023Z             {
2026-06-21T04:47:54.0195146Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T04:47:54.0195236Z               "line": 242
2026-06-21T04:47:54.0195318Z             },
2026-06-21T04:47:54.0195400Z             {
2026-06-21T04:47:54.0195513Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T04:47:54.0195599Z               "line": 267
2026-06-21T04:47:54.0195681Z             },
2026-06-21T04:47:54.0195757Z             {
2026-06-21T04:47:54.0195871Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T04:47:54.0195957Z               "line": 293
2026-06-21T04:47:54.0196043Z             },
2026-06-21T04:47:54.0196119Z             {
2026-06-21T04:47:54.0196233Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T04:47:54.0196329Z               "line": 51
2026-06-21T04:47:54.0196500Z             },
2026-06-21T04:47:54.0196587Z             {
2026-06-21T04:47:54.0196710Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T04:47:54.0196791Z               "line": 333
2026-06-21T04:47:54.0196883Z             },
2026-06-21T04:47:54.0196969Z             {
2026-06-21T04:47:54.0197091Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T04:47:54.0197186Z               "line": 373
2026-06-21T04:47:54.0197272Z             },
2026-06-21T04:47:54.0197366Z             {
2026-06-21T04:47:54.0197483Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T04:47:54.0197575Z               "line": 602
2026-06-21T04:47:54.0197732Z             },
2026-06-21T04:47:54.0197817Z             {
2026-06-21T04:47:54.0197947Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T04:47:54.0198038Z               "line": 132
2026-06-21T04:47:54.0198122Z             },
2026-06-21T04:47:54.0198210Z             {
2026-06-21T04:47:54.0198343Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T04:47:54.0198432Z               "line": 448
2026-06-21T04:47:54.0198525Z             },
2026-06-21T04:47:54.0198615Z             {
2026-06-21T04:47:54.0198733Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T04:47:54.0198829Z               "line": 74
2026-06-21T04:47:54.0198915Z             },
2026-06-21T04:47:54.0199091Z             {
2026-06-21T04:47:54.0199545Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:54.0199653Z               "line": 605
2026-06-21T04:47:54.0199750Z             },
2026-06-21T04:47:54.0199836Z             {
2026-06-21T04:47:54.0199991Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:54.0200081Z               "line": 396
2026-06-21T04:47:54.0200173Z             },
2026-06-21T04:47:54.0200264Z             {
2026-06-21T04:47:54.0200377Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0200463Z               "line": 6518
2026-06-21T04:47:54.0200549Z             }
2026-06-21T04:47:54.0200634Z           ]
2026-06-21T04:47:54.0200706Z         },
2026-06-21T04:47:54.0200788Z         "int": {
2026-06-21T04:47:54.0200888Z           "complete": true,
2026-06-21T04:47:54.0200977Z           "evidence": [
2026-06-21T04:47:54.0201064Z             {
2026-06-21T04:47:54.0201202Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T04:47:54.0201292Z               "line": 1262
2026-06-21T04:47:54.0201379Z             },
2026-06-21T04:47:54.0201461Z             {
2026-06-21T04:47:54.0201579Z               "path": "crates/spt/tests/drive_e2e.rs",
2026-06-21T04:47:54.0201660Z               "line": 17
2026-06-21T04:47:54.0201742Z             }
2026-06-21T04:47:54.0201822Z           ]
2026-06-21T04:47:54.0201908Z         },
2026-06-21T04:47:54.0201989Z         "unit": {
2026-06-21T04:47:54.0202091Z           "complete": true,
2026-06-21T04:47:54.0202179Z           "evidence": [
2026-06-21T04:47:54.0202265Z             {
2026-06-21T04:47:54.0202398Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T04:47:54.0202482Z               "line": 311
2026-06-21T04:47:54.0202567Z             },
2026-06-21T04:47:54.0202648Z             {
2026-06-21T04:47:54.0202778Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T04:47:54.0202868Z               "line": 325
2026-06-21T04:47:54.0202939Z             },
2026-06-21T04:47:54.0203020Z             {
2026-06-21T04:47:54.0203145Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T04:47:54.0203230Z               "line": 343
2026-06-21T04:47:54.0203312Z             },
2026-06-21T04:47:54.0203393Z             {
2026-06-21T04:47:54.0203516Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T04:47:54.0203597Z               "line": 364
2026-06-21T04:47:54.0203675Z             },
2026-06-21T04:47:54.0203755Z             {
2026-06-21T04:47:54.0203878Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T04:47:54.0204174Z               "line": 376
2026-06-21T04:47:54.0204251Z             },
2026-06-21T04:47:54.0204342Z             {
2026-06-21T04:47:54.0204460Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T04:47:54.0204556Z               "line": 897
2026-06-21T04:47:54.0204634Z             },
2026-06-21T04:47:54.0204717Z             {
2026-06-21T04:47:54.0204832Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T04:47:54.0204914Z               "line": 957
2026-06-21T04:47:54.0204986Z             },
2026-06-21T04:47:54.0205065Z             {
2026-06-21T04:47:54.0205188Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T04:47:54.0205368Z               "line": 338
2026-06-21T04:47:54.0205453Z             },
2026-06-21T04:47:54.0205535Z             {
2026-06-21T04:47:54.0205640Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T04:47:54.0205730Z               "line": 769
2026-06-21T04:47:54.0205810Z             },
2026-06-21T04:47:54.0205888Z             {
2026-06-21T04:47:54.0205998Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0206087Z               "line": 8836
2026-06-21T04:47:54.0206174Z             }
2026-06-21T04:47:54.0206250Z           ]
2026-06-21T04:47:54.0206336Z         }
2026-06-21T04:47:54.0206421Z       }
2026-06-21T04:47:54.0206508Z     },
2026-06-21T04:47:54.0206584Z     {
2026-06-21T04:47:54.0206679Z       "id": "REQ-SHELL-4",
2026-06-21T04:47:54.0208536Z       "title": "Shell tunnel (reliable-ordered opaque byte stream): an owner<->shell link may hold a long-lived, reliable-ordered, link-bound QUIC stream pair carrying opaque wire protocol traffic the channel taxonomy must NOT reinterpret (first consumer usbip URB) — manifest opt-in, not enveloped, not MAC-framed, not spooled; the link lifecycle governs it (a link-break closes the tunnel). Reliable-ordered ⇒ congestion surfaces as lag never loss ⇒ acceptable only on-LAN: the on-LAN posture is documented and the tunnel is NOT proven cross-WAN (CONTEXT:262, minted 2026-06-11 Gateway grill; doyle gate C2).",
2026-06-21T04:47:54.0208659Z       "requiredStages": [
2026-06-21T04:47:54.0208740Z         "doc",
2026-06-21T04:47:54.0208826Z         "impl",
2026-06-21T04:47:54.0208912Z         "unit",
2026-06-21T04:47:54.0209094Z         "int"
2026-06-21T04:47:54.0209170Z       ],
2026-06-21T04:47:54.0209256Z       "stages": {
2026-06-21T04:47:54.0209336Z         "doc": {
2026-06-21T04:47:54.0209437Z           "complete": true,
2026-06-21T04:47:54.0209518Z           "evidence": [
2026-06-21T04:47:54.0209594Z             {
2026-06-21T04:47:54.0209699Z               "path": "CONTEXT.md",
2026-06-21T04:47:54.0209785Z               "line": 281
2026-06-21T04:47:54.0209879Z             },
2026-06-21T04:47:54.0209961Z             {
2026-06-21T04:47:54.0210194Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-21T04:47:54.0210280Z               "line": 88
2026-06-21T04:47:54.0210368Z             }
2026-06-21T04:47:54.0210453Z           ]
2026-06-21T04:47:54.0210542Z         },
2026-06-21T04:47:54.0210627Z         "impl": {
2026-06-21T04:47:54.0210713Z           "complete": true,
2026-06-21T04:47:54.0210810Z           "evidence": [
2026-06-21T04:47:54.0210894Z             {
2026-06-21T04:47:54.0211019Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:54.0211100Z               "line": 243
2026-06-21T04:47:54.0211190Z             },
2026-06-21T04:47:54.0211281Z             {
2026-06-21T04:47:54.0211396Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T04:47:54.0211491Z               "line": 61
2026-06-21T04:47:54.0211586Z             },
2026-06-21T04:47:54.0211663Z             {
2026-06-21T04:47:54.0211796Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T04:47:54.0211881Z               "line": 218
2026-06-21T04:47:54.0211959Z             },
2026-06-21T04:47:54.0212035Z             {
2026-06-21T04:47:54.0212163Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T04:47:54.0212359Z               "line": 245
2026-06-21T04:47:54.0212439Z             },
2026-06-21T04:47:54.0212525Z             {
2026-06-21T04:47:54.0212641Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T04:47:54.0212730Z               "line": 566
2026-06-21T04:47:54.0212820Z             },
2026-06-21T04:47:54.0212929Z             {
2026-06-21T04:47:54.0213066Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T04:47:54.0213156Z               "line": 1141
2026-06-21T04:47:54.0213242Z             },
2026-06-21T04:47:54.0213319Z             {
2026-06-21T04:47:54.0213442Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T04:47:54.0213662Z               "line": 1153
2026-06-21T04:47:54.0213771Z             },
2026-06-21T04:47:54.0213877Z             {
2026-06-21T04:47:54.0214015Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T04:47:54.0214143Z               "line": 1194
2026-06-21T04:47:54.0214225Z             },
2026-06-21T04:47:54.0214320Z             {
2026-06-21T04:47:54.0214453Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T04:47:54.0214564Z               "line": 456
2026-06-21T04:47:54.0214648Z             },
2026-06-21T04:47:54.0214734Z             {
2026-06-21T04:47:54.0214859Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T04:47:54.0214949Z               "line": 44
2026-06-21T04:47:54.0215035Z             },
2026-06-21T04:47:54.0215126Z             {
2026-06-21T04:47:54.0215250Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T04:47:54.0215350Z               "line": 208
2026-06-21T04:47:54.0215426Z             },
2026-06-21T04:47:54.0215523Z             {
2026-06-21T04:47:54.0215635Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T04:47:54.0215729Z               "line": 227
2026-06-21T04:47:54.0215811Z             },
2026-06-21T04:47:54.0215905Z             {
2026-06-21T04:47:54.0216033Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T04:47:54.0216123Z               "line": 253
2026-06-21T04:47:54.0216210Z             },
2026-06-21T04:47:54.0216295Z             {
2026-06-21T04:47:54.0216424Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T04:47:54.0216515Z               "line": 272
2026-06-21T04:47:54.0216600Z             },
2026-06-21T04:47:54.0216691Z             {
2026-06-21T04:47:54.0216811Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T04:47:54.0216901Z               "line": 392
2026-06-21T04:47:54.0216976Z             },
2026-06-21T04:47:54.0217058Z             {
2026-06-21T04:47:54.0217177Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T04:47:54.0217277Z               "line": 421
2026-06-21T04:47:54.0217363Z             },
2026-06-21T04:47:54.0217450Z             {
2026-06-21T04:47:54.0217563Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T04:47:54.0217649Z               "line": 439
2026-06-21T04:47:54.0217741Z             },
2026-06-21T04:47:54.0217830Z             {
2026-06-21T04:47:54.0217945Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T04:47:54.0218036Z               "line": 458
2026-06-21T04:47:54.0218117Z             },
2026-06-21T04:47:54.0218207Z             {
2026-06-21T04:47:54.0218330Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T04:47:54.0218420Z               "line": 486
2026-06-21T04:47:54.0218500Z             },
2026-06-21T04:47:54.0218580Z             {
2026-06-21T04:47:54.0218710Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:54.0218801Z               "line": 624
2026-06-21T04:47:54.0218900Z             },
2026-06-21T04:47:54.0219043Z             {
2026-06-21T04:47:54.0219176Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:54.0219271Z               "line": 829
2026-06-21T04:47:54.0219368Z             },
2026-06-21T04:47:54.0219472Z             {
2026-06-21T04:47:54.0219601Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:54.0219806Z               "line": 435
2026-06-21T04:47:54.0219886Z             },
2026-06-21T04:47:54.0219998Z             {
2026-06-21T04:47:54.0220111Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0220192Z               "line": 6574
2026-06-21T04:47:54.0220279Z             }
2026-06-21T04:47:54.0220364Z           ]
2026-06-21T04:47:54.0220445Z         },
2026-06-21T04:47:54.0220530Z         "int": {
2026-06-21T04:47:54.0220632Z           "complete": true,
2026-06-21T04:47:54.0220730Z           "evidence": [
2026-06-21T04:47:54.0220807Z             {
2026-06-21T04:47:54.0220933Z               "path": "crates/spt/tests/tunnel_e2e.rs",
2026-06-21T04:47:54.0221125Z               "line": 18
2026-06-21T04:47:54.0221211Z             }
2026-06-21T04:47:54.0221298Z           ]
2026-06-21T04:47:54.0221384Z         },
2026-06-21T04:47:54.0221464Z         "unit": {
2026-06-21T04:47:54.0221555Z           "complete": true,
2026-06-21T04:47:54.0221651Z           "evidence": [
2026-06-21T04:47:54.0221727Z             {
2026-06-21T04:47:54.0221841Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T04:47:54.0221923Z               "line": 1391
2026-06-21T04:47:54.0222003Z             },
2026-06-21T04:47:54.0222089Z             {
2026-06-21T04:47:54.0222204Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T04:47:54.0222299Z               "line": 1420
2026-06-21T04:47:54.0222380Z             },
2026-06-21T04:47:54.0222465Z             {
2026-06-21T04:47:54.0222585Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T04:47:54.0222685Z               "line": 504
2026-06-21T04:47:54.0222780Z             },
2026-06-21T04:47:54.0222858Z             {
2026-06-21T04:47:54.0222966Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T04:47:54.0223057Z               "line": 514
2026-06-21T04:47:54.0223138Z             },
2026-06-21T04:47:54.0223220Z             {
2026-06-21T04:47:54.0223337Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T04:47:54.0223427Z               "line": 531
2026-06-21T04:47:54.0223513Z             },
2026-06-21T04:47:54.0223598Z             {
2026-06-21T04:47:54.0223716Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T04:47:54.0223802Z               "line": 543
2026-06-21T04:47:54.0223888Z             },
2026-06-21T04:47:54.0223974Z             {
2026-06-21T04:47:54.0224088Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T04:47:54.0224175Z               "line": 555
2026-06-21T04:47:54.0224260Z             },
2026-06-21T04:47:54.0224340Z             {
2026-06-21T04:47:54.0224480Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:54.0224565Z               "line": 1145
2026-06-21T04:47:54.0224646Z             },
2026-06-21T04:47:54.0224732Z             {
2026-06-21T04:47:54.0224837Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T04:47:54.0224932Z               "line": 776
2026-06-21T04:47:54.0225028Z             }
2026-06-21T04:47:54.0225109Z           ]
2026-06-21T04:47:54.0225199Z         }
2026-06-21T04:47:54.0225280Z       }
2026-06-21T04:47:54.0225376Z     },
2026-06-21T04:47:54.0225453Z     {
2026-06-21T04:47:54.0225551Z       "id": "REQ-SHELL-5",
2026-06-21T04:47:54.0227028Z       "title": "Shell ownership is owner-type-agnostic: any non-Shell endpoint type may own/spawn/drive/command/link a shell (Gateway the named first) — control-exclusivity keys on the owner endpoint_id, NEVER on the owner's endpoint type. No ownership path (mint, launch, owner-from-link, cmd, drive, tunnel, sleep/wake, owner-shutdown) inspects the owner's type (CONTEXT:264, ratified 2026-06-11 Gateway grill).",
2026-06-21T04:47:54.0227147Z       "requiredStages": [
2026-06-21T04:47:54.0227241Z         "doc",
2026-06-21T04:47:54.0227323Z         "impl",
2026-06-21T04:47:54.0227413Z         "unit",
2026-06-21T04:47:54.0227494Z         "int"
2026-06-21T04:47:54.0227580Z       ],
2026-06-21T04:47:54.0227766Z       "stages": {
2026-06-21T04:47:54.0227847Z         "doc": {
2026-06-21T04:47:54.0227948Z           "complete": true,
2026-06-21T04:47:54.0228034Z           "evidence": [
2026-06-21T04:47:54.0228113Z             {
2026-06-21T04:47:54.0228214Z               "path": "CONTEXT.md",
2026-06-21T04:47:54.0228301Z               "line": 284
2026-06-21T04:47:54.0228381Z             }
2026-06-21T04:47:54.0228467Z           ]
2026-06-21T04:47:54.0228553Z         },
2026-06-21T04:47:54.0228635Z         "impl": {
2026-06-21T04:47:54.0228729Z           "complete": true,
2026-06-21T04:47:54.0228814Z           "evidence": [
2026-06-21T04:47:54.0228895Z             {
2026-06-21T04:47:54.0229217Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T04:47:54.0229318Z               "line": 260
2026-06-21T04:47:54.0229403Z             }
2026-06-21T04:47:54.0229488Z           ]
2026-06-21T04:47:54.0229570Z         },
2026-06-21T04:47:54.0229642Z         "int": {
2026-06-21T04:47:54.0229746Z           "complete": true,
2026-06-21T04:47:54.0229841Z           "evidence": [
2026-06-21T04:47:54.0229919Z             {
2026-06-21T04:47:54.0230032Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T04:47:54.0230123Z               "line": 827
2026-06-21T04:47:54.0230200Z             },
2026-06-21T04:47:54.0230276Z             {
2026-06-21T04:47:54.0230394Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T04:47:54.0230490Z               "line": 1290
2026-06-21T04:47:54.0230577Z             },
2026-06-21T04:47:54.0230662Z             {
2026-06-21T04:47:54.0230800Z               "path": "crates/spt/tests/gateway_owner_shell_e2e.rs",
2026-06-21T04:47:54.0230892Z               "line": 23
2026-06-21T04:47:54.0230976Z             }
2026-06-21T04:47:54.0231062Z           ]
2026-06-21T04:47:54.0231149Z         },
2026-06-21T04:47:54.0231234Z         "unit": {
2026-06-21T04:47:54.0231319Z           "complete": true,
2026-06-21T04:47:54.0231401Z           "evidence": [
2026-06-21T04:47:54.0231493Z             {
2026-06-21T04:47:54.0231619Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T04:47:54.0231704Z               "line": 803
2026-06-21T04:47:54.0231786Z             }
2026-06-21T04:47:54.0231868Z           ]
2026-06-21T04:47:54.0231953Z         }
2026-06-21T04:47:54.0232033Z       }
2026-06-21T04:47:54.0232120Z     },
2026-06-21T04:47:54.0232192Z     {
2026-06-21T04:47:54.0232291Z       "id": "REQ-START-1",
2026-06-21T04:47:54.0232483Z       "title": "Adapters never resolve SPT_HOME; binary on PATH; api bridging only",
2026-06-21T04:47:54.0232568Z       "requiredStages": [
2026-06-21T04:47:54.0232654Z         "impl",
2026-06-21T04:47:54.0232735Z         "unit"
2026-06-21T04:47:54.0232821Z       ],
2026-06-21T04:47:54.0232906Z       "stages": {
2026-06-21T04:47:54.0232997Z         "doc": {
2026-06-21T04:47:54.0233094Z           "complete": false,
2026-06-21T04:47:54.0233179Z           "evidence": []
2026-06-21T04:47:54.0233264Z         },
2026-06-21T04:47:54.0233360Z         "impl": {
2026-06-21T04:47:54.0233456Z           "complete": true,
2026-06-21T04:47:54.0233540Z           "evidence": [
2026-06-21T04:47:54.0233622Z             {
2026-06-21T04:47:54.0233742Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T04:47:54.0233827Z               "line": 16
2026-06-21T04:47:54.0233912Z             }
2026-06-21T04:47:54.0233997Z           ]
2026-06-21T04:47:54.0234083Z         },
2026-06-21T04:47:54.0234172Z         "int": {
2026-06-21T04:47:54.0234271Z           "complete": false,
2026-06-21T04:47:54.0234372Z           "evidence": []
2026-06-21T04:47:54.0234453Z         },
2026-06-21T04:47:54.0234539Z         "unit": {
2026-06-21T04:47:54.0234624Z           "complete": true,
2026-06-21T04:47:54.0234706Z           "evidence": [
2026-06-21T04:47:54.0234787Z             {
2026-06-21T04:47:54.0234900Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T04:47:54.0234997Z               "line": 48
2026-06-21T04:47:54.0235074Z             },
2026-06-21T04:47:54.0235278Z             {
2026-06-21T04:47:54.0235393Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T04:47:54.0235483Z               "line": 63
2026-06-21T04:47:54.0235558Z             }
2026-06-21T04:47:54.0235641Z           ]
2026-06-21T04:47:54.0235731Z         }
2026-06-21T04:47:54.0235817Z       }
2026-06-21T04:47:54.0235897Z     },
2026-06-21T04:47:54.0235975Z     {
2026-06-21T04:47:54.0236074Z       "id": "REQ-START-2",
2026-06-21T04:47:54.0236207Z       "title": "Harness-hosted startup: api seed then listen",
2026-06-21T04:47:54.0236309Z       "requiredStages": [
2026-06-21T04:47:54.0236398Z         "impl",
2026-06-21T04:47:54.0236571Z         "unit",
2026-06-21T04:47:54.0236662Z         "int"
2026-06-21T04:47:54.0236741Z       ],
2026-06-21T04:47:54.0236831Z       "stages": {
2026-06-21T04:47:54.0236912Z         "doc": {
2026-06-21T04:47:54.0237012Z           "complete": false,
2026-06-21T04:47:54.0237110Z           "evidence": []
2026-06-21T04:47:54.0237200Z         },
2026-06-21T04:47:54.0237287Z         "impl": {
2026-06-21T04:47:54.0237378Z           "complete": true,
2026-06-21T04:47:54.0237462Z           "evidence": [
2026-06-21T04:47:54.0237549Z             {
2026-06-21T04:47:54.0237668Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:54.0237749Z               "line": 16
2026-06-21T04:47:54.0237835Z             },
2026-06-21T04:47:54.0237922Z             {
2026-06-21T04:47:54.0238036Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:54.0238130Z               "line": 115
2026-06-21T04:47:54.0238212Z             },
2026-06-21T04:47:54.0238298Z             {
2026-06-21T04:47:54.0238426Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:54.0238508Z               "line": 300
2026-06-21T04:47:54.0238594Z             }
2026-06-21T04:47:54.0238673Z           ]
2026-06-21T04:47:54.0238760Z         },
2026-06-21T04:47:54.0238842Z         "int": {
2026-06-21T04:47:54.0239046Z           "complete": true,
2026-06-21T04:47:54.0239148Z           "evidence": [
2026-06-21T04:47:54.0239233Z             {
2026-06-21T04:47:54.0239350Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T04:47:54.0239440Z               "line": 186
2026-06-21T04:47:54.0239522Z             }
2026-06-21T04:47:54.0239602Z           ]
2026-06-21T04:47:54.0239686Z         },
2026-06-21T04:47:54.0239767Z         "unit": {
2026-06-21T04:47:54.0239854Z           "complete": true,
2026-06-21T04:47:54.0239944Z           "evidence": [
2026-06-21T04:47:54.0240025Z             {
2026-06-21T04:47:54.0240140Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:54.0240221Z               "line": 590
2026-06-21T04:47:54.0240306Z             },
2026-06-21T04:47:54.0240391Z             {
2026-06-21T04:47:54.0240503Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:54.0240593Z               "line": 623
2026-06-21T04:47:54.0240678Z             }
2026-06-21T04:47:54.0240760Z           ]
2026-06-21T04:47:54.0240855Z         }
2026-06-21T04:47:54.0240940Z       }
2026-06-21T04:47:54.0241026Z     },
2026-06-21T04:47:54.0241109Z     {
2026-06-21T04:47:54.0241207Z       "id": "REQ-START-3",
2026-06-21T04:47:54.0241380Z       "title": "spt-hosted startup: spawn-session then api bind (no file)",
2026-06-21T04:47:54.0241485Z       "requiredStages": [
2026-06-21T04:47:54.0241560Z         "impl",
2026-06-21T04:47:54.0241651Z         "unit",
2026-06-21T04:47:54.0241733Z         "int"
2026-06-21T04:47:54.0241813Z       ],
2026-06-21T04:47:54.0241904Z       "stages": {
2026-06-21T04:47:54.0241990Z         "doc": {
2026-06-21T04:47:54.0242086Z           "complete": false,
2026-06-21T04:47:54.0242179Z           "evidence": []
2026-06-21T04:47:54.0242270Z         },
2026-06-21T04:47:54.0242346Z         "impl": {
2026-06-21T04:47:54.0242442Z           "complete": true,
2026-06-21T04:47:54.0242537Z           "evidence": [
2026-06-21T04:47:54.0242627Z             {
2026-06-21T04:47:54.0242747Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T04:47:54.0242937Z               "line": 23
2026-06-21T04:47:54.0243024Z             },
2026-06-21T04:47:54.0243114Z             {
2026-06-21T04:47:54.0243223Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T04:47:54.0246620Z               "line": 205
2026-06-21T04:47:54.0246734Z             },
2026-06-21T04:47:54.0246821Z             {
2026-06-21T04:47:54.0246958Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T04:47:54.0247059Z               "line": 221
2026-06-21T04:47:54.0247150Z             },
2026-06-21T04:47:54.0247241Z             {
2026-06-21T04:47:54.0247367Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:54.0247600Z               "line": 17
2026-06-21T04:47:54.0247684Z             },
2026-06-21T04:47:54.0247770Z             {
2026-06-21T04:47:54.0247900Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:54.0247990Z               "line": 35
2026-06-21T04:47:54.0248085Z             },
2026-06-21T04:47:54.0248167Z             {
2026-06-21T04:47:54.0248276Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:54.0248375Z               "line": 116
2026-06-21T04:47:54.0248453Z             }
2026-06-21T04:47:54.0248539Z           ]
2026-06-21T04:47:54.0248629Z         },
2026-06-21T04:47:54.0248705Z         "int": {
2026-06-21T04:47:54.0248806Z           "complete": true,
2026-06-21T04:47:54.0248886Z           "evidence": [
2026-06-21T04:47:54.0249044Z             {
2026-06-21T04:47:54.0249168Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T04:47:54.0249258Z               "line": 488
2026-06-21T04:47:54.0249349Z             }
2026-06-21T04:47:54.0249435Z           ]
2026-06-21T04:47:54.0249521Z         },
2026-06-21T04:47:54.0249602Z         "unit": {
2026-06-21T04:47:54.0249688Z           "complete": true,
2026-06-21T04:47:54.0249774Z           "evidence": [
2026-06-21T04:47:54.0249859Z             {
2026-06-21T04:47:54.0249986Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T04:47:54.0250077Z               "line": 381
2026-06-21T04:47:54.0250157Z             },
2026-06-21T04:47:54.0250242Z             {
2026-06-21T04:47:54.0250366Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T04:47:54.0250452Z               "line": 402
2026-06-21T04:47:54.0250537Z             },
2026-06-21T04:47:54.0250618Z             {
2026-06-21T04:47:54.0250739Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T04:47:54.0250820Z               "line": 412
2026-06-21T04:47:54.0250909Z             },
2026-06-21T04:47:54.0250991Z             {
2026-06-21T04:47:54.0251110Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:54.0251186Z               "line": 591
2026-06-21T04:47:54.0251276Z             },
2026-06-21T04:47:54.0251354Z             {
2026-06-21T04:47:54.0251472Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:54.0251553Z               "line": 624
2026-06-21T04:47:54.0251640Z             },
2026-06-21T04:47:54.0251721Z             {
2026-06-21T04:47:54.0251830Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:54.0251920Z               "line": 657
2026-06-21T04:47:54.0252007Z             }
2026-06-21T04:47:54.0252087Z           ]
2026-06-21T04:47:54.0252172Z         }
2026-06-21T04:47:54.0252265Z       }
2026-06-21T04:47:54.0252351Z     },
2026-06-21T04:47:54.0252434Z     {
2026-06-21T04:47:54.0252531Z       "id": "REQ-START-4",
2026-06-21T04:47:54.0252675Z       "title": "Adapter-injected env aliases (SPT/OWL/LIVE)",
2026-06-21T04:47:54.0252777Z       "requiredStages": [
2026-06-21T04:47:54.0252867Z         "impl",
2026-06-21T04:47:54.0252959Z         "unit"
2026-06-21T04:47:54.0253041Z       ],
2026-06-21T04:47:54.0253125Z       "stages": {
2026-06-21T04:47:54.0253206Z         "doc": {
2026-06-21T04:47:54.0253293Z           "complete": false,
2026-06-21T04:47:54.0253379Z           "evidence": []
2026-06-21T04:47:54.0253464Z         },
2026-06-21T04:47:54.0253660Z         "impl": {
2026-06-21T04:47:54.0253750Z           "complete": true,
2026-06-21T04:47:54.0253846Z           "evidence": [
2026-06-21T04:47:54.0253937Z             {
2026-06-21T04:47:54.0254060Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:54.0254146Z               "line": 585
2026-06-21T04:47:54.0254228Z             }
2026-06-21T04:47:54.0254317Z           ]
2026-06-21T04:47:54.0254408Z         },
2026-06-21T04:47:54.0254495Z         "int": {
2026-06-21T04:47:54.0254590Z           "complete": false,
2026-06-21T04:47:54.0254680Z           "evidence": []
2026-06-21T04:47:54.0254761Z         },
2026-06-21T04:47:54.0254943Z         "unit": {
2026-06-21T04:47:54.0255042Z           "complete": true,
2026-06-21T04:47:54.0255127Z           "evidence": [
2026-06-21T04:47:54.0255213Z             {
2026-06-21T04:47:54.0255330Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:54.0255410Z               "line": 1026
2026-06-21T04:47:54.0255507Z             }
2026-06-21T04:47:54.0255588Z           ]
2026-06-21T04:47:54.0255673Z         }
2026-06-21T04:47:54.0255754Z       }
2026-06-21T04:47:54.0255836Z     },
2026-06-21T04:47:54.0255931Z     {
2026-06-21T04:47:54.0256026Z       "id": "REQ-START-5",
2026-06-21T04:47:54.0258893Z       "title": "Adapter-agnostic harness-hosted seed + bind-time adapter/profile resolution (ADR-0021): `api seed` carries only parent_pid + session_id (+ optional cwd), no --adapter — a pure \"a harness session exists at this pid\" record; --adapter becomes an OPTIONAL override across the whole api group (an explicit name[:profile] for adapter dev, never required). Omitted, listen/poll resolve the owning adapter/profile AT BIND as a pure read against the live registry — never a seed-time snapshot that can drift: seed parent_pid → exe basename → host_binaries candidate set (REQ-MANIFEST-8) → active-profile pointer (REQ-INSTALL-12) primary, else greatest-registered_at_ms candidate base profile (name-asc tie) → friendly zero-match error. Covers BOTH LiveAgent (listen) and ReadyAgent (poll) bringup. Restores legacy parity: `$LIVE start <id>` → `$SPT listen <id>` with no mandatory --adapter, one generic SessionStart hook per harness binary. (v0.9.0)",
2026-06-21T04:47:54.0259099Z       "requiredStages": [
2026-06-21T04:47:54.0259184Z         "doc",
2026-06-21T04:47:54.0259270Z         "impl",
2026-06-21T04:47:54.0259352Z         "unit",
2026-06-21T04:47:54.0259427Z         "int"
2026-06-21T04:47:54.0259513Z       ],
2026-06-21T04:47:54.0259599Z       "stages": {
2026-06-21T04:47:54.0259681Z         "doc": {
2026-06-21T04:47:54.0259775Z           "complete": true,
2026-06-21T04:47:54.0259880Z           "evidence": [
2026-06-21T04:47:54.0259953Z             {
2026-06-21T04:47:54.0260043Z               "path": "CONTEXT.md",
2026-06-21T04:47:54.0260128Z               "line": 176
2026-06-21T04:47:54.0260214Z             },
2026-06-21T04:47:54.0260297Z             {
2026-06-21T04:47:54.0260433Z               "path": "docs-site/src/harness-contract/api.md",
2026-06-21T04:47:54.0260527Z               "line": 28
2026-06-21T04:47:54.0260614Z             }
2026-06-21T04:47:54.0260703Z           ]
2026-06-21T04:47:54.0260792Z         },
2026-06-21T04:47:54.0260882Z         "impl": {
2026-06-21T04:47:54.0260974Z           "complete": true,
2026-06-21T04:47:54.0261060Z           "evidence": [
2026-06-21T04:47:54.0261145Z             {
2026-06-21T04:47:54.0261270Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T04:47:54.0261360Z               "line": 26
2026-06-21T04:47:54.0261445Z             },
2026-06-21T04:47:54.0261531Z             {
2026-06-21T04:47:54.0261656Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T04:47:54.0261746Z               "line": 212
2026-06-21T04:47:54.0261837Z             },
2026-06-21T04:47:54.0261928Z             {
2026-06-21T04:47:54.0262037Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T04:47:54.0262132Z               "line": 221
2026-06-21T04:47:54.0262314Z             },
2026-06-21T04:47:54.0262399Z             {
2026-06-21T04:47:54.0262505Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T04:47:54.0262600Z               "line": 485
2026-06-21T04:47:54.0262685Z             },
2026-06-21T04:47:54.0262771Z             {
2026-06-21T04:47:54.0262897Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:54.0262990Z               "line": 36
2026-06-21T04:47:54.0263076Z             },
2026-06-21T04:47:54.0263159Z             {
2026-06-21T04:47:54.0263272Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:54.0263357Z               "line": 118
2026-06-21T04:47:54.0263557Z             },
2026-06-21T04:47:54.0263643Z             {
2026-06-21T04:47:54.0263752Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T04:47:54.0263834Z               "line": 329
2026-06-21T04:47:54.0263920Z             }
2026-06-21T04:47:54.0264005Z           ]
2026-06-21T04:47:54.0264086Z         },
2026-06-21T04:47:54.0264183Z         "int": {
2026-06-21T04:47:54.0264273Z           "complete": true,
2026-06-21T04:47:54.0264353Z           "evidence": [
2026-06-21T04:47:54.0264444Z             {
2026-06-21T04:47:54.0264568Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T04:47:54.0264648Z               "line": 17
2026-06-21T04:47:54.0264735Z             }
2026-06-21T04:47:54.0264822Z           ]
2026-06-21T04:47:54.0264906Z         },
2026-06-21T04:47:54.0264987Z         "unit": {
2026-06-21T04:47:54.0265093Z           "complete": true,
2026-06-21T04:47:54.0265174Z           "evidence": [
2026-06-21T04:47:54.0265259Z             {
2026-06-21T04:47:54.0265389Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T04:47:54.0265480Z               "line": 358
2026-06-21T04:47:54.0265559Z             },
2026-06-21T04:47:54.0265635Z             {
2026-06-21T04:47:54.0265759Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T04:47:54.0265848Z               "line": 371
2026-06-21T04:47:54.0265947Z             },
2026-06-21T04:47:54.0266033Z             {
2026-06-21T04:47:54.0266149Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T04:47:54.0266243Z               "line": 597
2026-06-21T04:47:54.0266329Z             }
2026-06-21T04:47:54.0266411Z           ]
2026-06-21T04:47:54.0266492Z         }
2026-06-21T04:47:54.0266581Z       }
2026-06-21T04:47:54.0266668Z     },
2026-06-21T04:47:54.0266749Z     {
2026-06-21T04:47:54.0266839Z       "id": "REQ-STORE-1",
2026-06-21T04:47:54.0267684Z       "title": "spt-store::BranchStore (git branch as versioned KV; commit=checkpoint/tip=resume, atomic multi-key, merge-native sync) is the substrate for coarse/durable/audited state (context, registry snapshot+distribution, daemon checkpoint); hot paths (B5 fsync journal) + indexed queries (SQLite spool) excluded (ADR-0011)",
2026-06-21T04:47:54.0267792Z       "requiredStages": [
2026-06-21T04:47:54.0267883Z         "impl",
2026-06-21T04:47:54.0267970Z         "unit"
2026-06-21T04:47:54.0268060Z       ],
2026-06-21T04:47:54.0268145Z       "stages": {
2026-06-21T04:47:54.0268232Z         "doc": {
2026-06-21T04:47:54.0268319Z           "complete": false,
2026-06-21T04:47:54.0268398Z           "evidence": []
2026-06-21T04:47:54.0268483Z         },
2026-06-21T04:47:54.0268578Z         "impl": {
2026-06-21T04:47:54.0268664Z           "complete": true,
2026-06-21T04:47:54.0268748Z           "evidence": [
2026-06-21T04:47:54.0268838Z             {
2026-06-21T04:47:54.0269034Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T04:47:54.0269129Z               "line": 23
2026-06-21T04:47:54.0269210Z             },
2026-06-21T04:47:54.0269297Z             {
2026-06-21T04:47:54.0269420Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T04:47:54.0269500Z               "line": 46
2026-06-21T04:47:54.0269583Z             },
2026-06-21T04:47:54.0269673Z             {
2026-06-21T04:47:54.0269792Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T04:47:54.0269987Z               "line": 97
2026-06-21T04:47:54.0270073Z             },
2026-06-21T04:47:54.0270164Z             {
2026-06-21T04:47:54.0270274Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T04:47:54.0270364Z               "line": 125
2026-06-21T04:47:54.0270450Z             },
2026-06-21T04:47:54.0270532Z             {
2026-06-21T04:47:54.0270659Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T04:47:54.0270746Z               "line": 207
2026-06-21T04:47:54.0270837Z             },
2026-06-21T04:47:54.0270923Z             {
2026-06-21T04:47:54.0271049Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T04:47:54.0271231Z               "line": 231
2026-06-21T04:47:54.0271315Z             },
2026-06-21T04:47:54.0271400Z             {
2026-06-21T04:47:54.0271524Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T04:47:54.0271616Z               "line": 467
2026-06-21T04:47:54.0271691Z             },
2026-06-21T04:47:54.0271786Z             {
2026-06-21T04:47:54.0271911Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T04:47:54.0271996Z               "line": 25
2026-06-21T04:47:54.0272082Z             },
2026-06-21T04:47:54.0272164Z             {
2026-06-21T04:47:54.0272292Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T04:47:54.0272377Z               "line": 120
2026-06-21T04:47:54.0272455Z             },
2026-06-21T04:47:54.0272545Z             {
2026-06-21T04:47:54.0272668Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T04:47:54.0272760Z               "line": 148
2026-06-21T04:47:54.0272850Z             },
2026-06-21T04:47:54.0272931Z             {
2026-06-21T04:47:54.0273050Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T04:47:54.0273132Z               "line": 165
2026-06-21T04:47:54.0273222Z             },
2026-06-21T04:47:54.0273303Z             {
2026-06-21T04:47:54.0273428Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T04:47:54.0273517Z               "line": 180
2026-06-21T04:47:54.0273608Z             },
2026-06-21T04:47:54.0273690Z             {
2026-06-21T04:47:54.0273823Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T04:47:54.0273912Z               "line": 198
2026-06-21T04:47:54.0273997Z             },
2026-06-21T04:47:54.0274079Z             {
2026-06-21T04:47:54.0274199Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T04:47:54.0274293Z               "line": 207
2026-06-21T04:47:54.0274370Z             },
2026-06-21T04:47:54.0274451Z             {
2026-06-21T04:47:54.0274584Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T04:47:54.0274676Z               "line": 16
2026-06-21T04:47:54.0274771Z             },
2026-06-21T04:47:54.0274852Z             {
2026-06-21T04:47:54.0274966Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T04:47:54.0275057Z               "line": 63
2026-06-21T04:47:54.0275142Z             }
2026-06-21T04:47:54.0275227Z           ]
2026-06-21T04:47:54.0275315Z         },
2026-06-21T04:47:54.0275396Z         "int": {
2026-06-21T04:47:54.0275486Z           "complete": false,
2026-06-21T04:47:54.0275566Z           "evidence": []
2026-06-21T04:47:54.0275649Z         },
2026-06-21T04:47:54.0275734Z         "unit": {
2026-06-21T04:47:54.0275829Z           "complete": true,
2026-06-21T04:47:54.0275915Z           "evidence": [
2026-06-21T04:47:54.0275997Z             {
2026-06-21T04:47:54.0276114Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T04:47:54.0276209Z               "line": 584
2026-06-21T04:47:54.0276305Z             },
2026-06-21T04:47:54.0276390Z             {
2026-06-21T04:47:54.0276512Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T04:47:54.0276607Z               "line": 594
2026-06-21T04:47:54.0276694Z             },
2026-06-21T04:47:54.0276779Z             {
2026-06-21T04:47:54.0276903Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T04:47:54.0277085Z               "line": 616
2026-06-21T04:47:54.0277165Z             },
2026-06-21T04:47:54.0277257Z             {
2026-06-21T04:47:54.0277376Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T04:47:54.0277465Z               "line": 632
2026-06-21T04:47:54.0277548Z             },
2026-06-21T04:47:54.0277638Z             {
2026-06-21T04:47:54.0277756Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T04:47:54.0277842Z               "line": 690
2026-06-21T04:47:54.0277925Z             },
2026-06-21T04:47:54.0278009Z             {
2026-06-21T04:47:54.0278216Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T04:47:54.0278310Z               "line": 472
2026-06-21T04:47:54.0278391Z             },
2026-06-21T04:47:54.0278477Z             {
2026-06-21T04:47:54.0278588Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T04:47:54.0278686Z               "line": 507
2026-06-21T04:47:54.0278758Z             },
2026-06-21T04:47:54.0278845Z             {
2026-06-21T04:47:54.0279048Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T04:47:54.0279134Z               "line": 120
2026-06-21T04:47:54.0279220Z             },
2026-06-21T04:47:54.0279303Z             {
2026-06-21T04:47:54.0279421Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T04:47:54.0279513Z               "line": 128
2026-06-21T04:47:54.0279590Z             }
2026-06-21T04:47:54.0279675Z           ]
2026-06-21T04:47:54.0279760Z         }
2026-06-21T04:47:54.0279843Z       }
2026-06-21T04:47:54.0279928Z     },
2026-06-21T04:47:54.0280013Z     {
2026-06-21T04:47:54.0280109Z       "id": "REQ-SUBNET-1",
2026-06-21T04:47:54.0280429Z       "title": "spt subnet noun namespace: status view (bare + status [NAME] [--nodes]), create (QR/otpauth), show-code; spt pair deleted",
2026-06-21T04:47:54.0280533Z       "requiredStages": [
2026-06-21T04:47:54.0280614Z         "impl",
2026-06-21T04:47:54.0280700Z         "unit"
2026-06-21T04:47:54.0280783Z       ],
2026-06-21T04:47:54.0280862Z       "stages": {
2026-06-21T04:47:54.0280948Z         "doc": {
2026-06-21T04:47:54.0281044Z           "complete": false,
2026-06-21T04:47:54.0281135Z           "evidence": []
2026-06-21T04:47:54.0281224Z         },
2026-06-21T04:47:54.0281306Z         "impl": {
2026-06-21T04:47:54.0281393Z           "complete": true,
2026-06-21T04:47:54.0281488Z           "evidence": [
2026-06-21T04:47:54.0281568Z             {
2026-06-21T04:47:54.0281714Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:54.0281795Z               "line": 281
2026-06-21T04:47:54.0281879Z             },
2026-06-21T04:47:54.0281955Z             {
2026-06-21T04:47:54.0282085Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:54.0282176Z               "line": 651
2026-06-21T04:47:54.0282261Z             },
2026-06-21T04:47:54.0282356Z             {
2026-06-21T04:47:54.0282471Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0282566Z               "line": 3399
2026-06-21T04:47:54.0282647Z             },
2026-06-21T04:47:54.0282729Z             {
2026-06-21T04:47:54.0282838Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0282928Z               "line": 3709
2026-06-21T04:47:54.0283020Z             },
2026-06-21T04:47:54.0283105Z             {
2026-06-21T04:47:54.0283205Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0283286Z               "line": 3728
2026-06-21T04:47:54.0283373Z             },
2026-06-21T04:47:54.0283458Z             {
2026-06-21T04:47:54.0283553Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0283655Z               "line": 3792
2026-06-21T04:47:54.0283739Z             },
2026-06-21T04:47:54.0283825Z             {
2026-06-21T04:47:54.0283935Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0284017Z               "line": 3834
2026-06-21T04:47:54.0284106Z             },
2026-06-21T04:47:54.0284284Z             {
2026-06-21T04:47:54.0284392Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0284491Z               "line": 4023
2026-06-21T04:47:54.0284567Z             },
2026-06-21T04:47:54.0284659Z             {
2026-06-21T04:47:54.0284763Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0284858Z               "line": 4093
2026-06-21T04:47:54.0284931Z             },
2026-06-21T04:47:54.0285021Z             {
2026-06-21T04:47:54.0285130Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0285211Z               "line": 4317
2026-06-21T04:47:54.0285293Z             },
2026-06-21T04:47:54.0285463Z             {
2026-06-21T04:47:54.0285570Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0285651Z               "line": 4961
2026-06-21T04:47:54.0285736Z             },
2026-06-21T04:47:54.0285831Z             {
2026-06-21T04:47:54.0285932Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T04:47:54.0286031Z               "line": 418
2026-06-21T04:47:54.0286117Z             }
2026-06-21T04:47:54.0286209Z           ]
2026-06-21T04:47:54.0286290Z         },
2026-06-21T04:47:54.0286384Z         "int": {
2026-06-21T04:47:54.0286489Z           "complete": false,
2026-06-21T04:47:54.0286581Z           "evidence": []
2026-06-21T04:47:54.0286675Z         },
2026-06-21T04:47:54.0286760Z         "unit": {
2026-06-21T04:47:54.0286860Z           "complete": true,
2026-06-21T04:47:54.0286950Z           "evidence": [
2026-06-21T04:47:54.0287039Z             {
2026-06-21T04:47:54.0287168Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:54.0287259Z               "line": 1584
2026-06-21T04:47:54.0287353Z             },
2026-06-21T04:47:54.0287434Z             {
2026-06-21T04:47:54.0287550Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0287631Z               "line": 9964
2026-06-21T04:47:54.0287720Z             },
2026-06-21T04:47:54.0287802Z             {
2026-06-21T04:47:54.0287912Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0287997Z               "line": 10134
2026-06-21T04:47:54.0288083Z             },
2026-06-21T04:47:54.0288175Z             {
2026-06-21T04:47:54.0288279Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0288369Z               "line": 10141
2026-06-21T04:47:54.0288461Z             },
2026-06-21T04:47:54.0288546Z             {
2026-06-21T04:47:54.0288655Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0288737Z               "line": 10194
2026-06-21T04:47:54.0288824Z             },
2026-06-21T04:47:54.0288907Z             {
2026-06-21T04:47:54.0289095Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0289190Z               "line": 10211
2026-06-21T04:47:54.0289275Z             },
2026-06-21T04:47:54.0289357Z             {
2026-06-21T04:47:54.0289463Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0289551Z               "line": 10241
2026-06-21T04:47:54.0289641Z             },
2026-06-21T04:47:54.0289727Z             {
2026-06-21T04:47:54.0289836Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0289925Z               "line": 10357
2026-06-21T04:47:54.0290006Z             },
2026-06-21T04:47:54.0290093Z             {
2026-06-21T04:47:54.0290192Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0290283Z               "line": 10508
2026-06-21T04:47:54.0290369Z             }
2026-06-21T04:47:54.0290455Z           ]
2026-06-21T04:47:54.0290535Z         }
2026-06-21T04:47:54.0290621Z       }
2026-06-21T04:47:54.0290708Z     },
2026-06-21T04:47:54.0290793Z     {
2026-06-21T04:47:54.0290883Z       "id": "REQ-SUBNET-2",
2026-06-21T04:47:54.0291122Z       "title": "Guided join e2e: spt subnet join CLI initiator + always-on daemon pairing responder",
2026-06-21T04:47:54.0291227Z       "requiredStages": [
2026-06-21T04:47:54.0291313Z         "impl",
2026-06-21T04:47:54.0291399Z         "unit",
2026-06-21T04:47:54.0291484Z         "int"
2026-06-21T04:47:54.0291700Z       ],
2026-06-21T04:47:54.0291794Z       "stages": {
2026-06-21T04:47:54.0291880Z         "doc": {
2026-06-21T04:47:54.0291977Z           "complete": true,
2026-06-21T04:47:54.0292071Z           "evidence": [
2026-06-21T04:47:54.0292170Z             {
2026-06-21T04:47:54.0292323Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-21T04:47:54.0292416Z               "line": 60
2026-06-21T04:47:54.0292497Z             }
2026-06-21T04:47:54.0292578Z           ]
2026-06-21T04:47:54.0292669Z         },
2026-06-21T04:47:54.0292754Z         "impl": {
2026-06-21T04:47:54.0292849Z           "complete": true,
2026-06-21T04:47:54.0293065Z           "evidence": [
2026-06-21T04:47:54.0293150Z             {
2026-06-21T04:47:54.0293275Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T04:47:54.0293360Z               "line": 886
2026-06-21T04:47:54.0293445Z             },
2026-06-21T04:47:54.0293527Z             {
2026-06-21T04:47:54.0293656Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:54.0293746Z               "line": 1948
2026-06-21T04:47:54.0293832Z             },
2026-06-21T04:47:54.0293914Z             {
2026-06-21T04:47:54.0294028Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T04:47:54.0294113Z               "line": 633
2026-06-21T04:47:54.0294200Z             },
2026-06-21T04:47:54.0294285Z             {
2026-06-21T04:47:54.0294404Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T04:47:54.0294495Z               "line": 817
2026-06-21T04:47:54.0294586Z             },
2026-06-21T04:47:54.0294666Z             {
2026-06-21T04:47:54.0294791Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T04:47:54.0294873Z               "line": 26
2026-06-21T04:47:54.0294962Z             },
2026-06-21T04:47:54.0295047Z             {
2026-06-21T04:47:54.0295171Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T04:47:54.0295257Z               "line": 60
2026-06-21T04:47:54.0295343Z             },
2026-06-21T04:47:54.0295423Z             {
2026-06-21T04:47:54.0295548Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T04:47:54.0295643Z               "line": 168
2026-06-21T04:47:54.0295723Z             },
2026-06-21T04:47:54.0295811Z             {
2026-06-21T04:47:54.0295934Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T04:47:54.0296029Z               "line": 295
2026-06-21T04:47:54.0296120Z             },
2026-06-21T04:47:54.0296206Z             {
2026-06-21T04:47:54.0296329Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T04:47:54.0296420Z               "line": 417
2026-06-21T04:47:54.0296511Z             },
2026-06-21T04:47:54.0296596Z             {
2026-06-21T04:47:54.0296721Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T04:47:54.0296812Z               "line": 252
2026-06-21T04:47:54.0296892Z             },
2026-06-21T04:47:54.0296983Z             {
2026-06-21T04:47:54.0297094Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0297179Z               "line": 3755
2026-06-21T04:47:54.0297272Z             },
2026-06-21T04:47:54.0297358Z             {
2026-06-21T04:47:54.0297468Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0297557Z               "line": 4256
2026-06-21T04:47:54.0297642Z             },
2026-06-21T04:47:54.0297728Z             {
2026-06-21T04:47:54.0297829Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0297918Z               "line": 4892
2026-06-21T04:47:54.0297990Z             }
2026-06-21T04:47:54.0298081Z           ]
2026-06-21T04:47:54.0298167Z         },
2026-06-21T04:47:54.0298261Z         "int": {
2026-06-21T04:47:54.0298348Z           "complete": true,
2026-06-21T04:47:54.0298449Z           "evidence": [
2026-06-21T04:47:54.0298529Z             {
2026-06-21T04:47:54.0298653Z               "path": "crates/spt-daemon/tests/pairjoin.rs",
2026-06-21T04:47:54.0298754Z               "line": 22
2026-06-21T04:47:54.0298924Z             },
2026-06-21T04:47:54.0299092Z             {
2026-06-21T04:47:54.0299220Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T04:47:54.0299297Z               "line": 645
2026-06-21T04:47:54.0299384Z             },
2026-06-21T04:47:54.0299463Z             {
2026-06-21T04:47:54.0299593Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T04:47:54.0299684Z               "line": 887
2026-06-21T04:47:54.0299764Z             }
2026-06-21T04:47:54.0299854Z           ]
2026-06-21T04:47:54.0299932Z         },
2026-06-21T04:47:54.0300018Z         "unit": {
2026-06-21T04:47:54.0300107Z           "complete": true,
2026-06-21T04:47:54.0300288Z           "evidence": [
2026-06-21T04:47:54.0300377Z             {
2026-06-21T04:47:54.0300499Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T04:47:54.0300595Z               "line": 586
2026-06-21T04:47:54.0300672Z             },
2026-06-21T04:47:54.0300758Z             {
2026-06-21T04:47:54.0300866Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0300954Z               "line": 10004
2026-06-21T04:47:54.0301039Z             },
2026-06-21T04:47:54.0301128Z             {
2026-06-21T04:47:54.0301239Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0301325Z               "line": 10715
2026-06-21T04:47:54.0301420Z             }
2026-06-21T04:47:54.0301501Z           ]
2026-06-21T04:47:54.0301578Z         }
2026-06-21T04:47:54.0301663Z       }
2026-06-21T04:47:54.0301749Z     },
2026-06-21T04:47:54.0301835Z     {
2026-06-21T04:47:54.0301931Z       "id": "REQ-SUBNET-3",
2026-06-21T04:47:54.0302203Z       "title": "Node labels: hostname-default, gossiped, addressable in @node qualifiers (refuse-on-ambiguity)",
2026-06-21T04:47:54.0302312Z       "requiredStages": [
2026-06-21T04:47:54.0302407Z         "impl",
2026-06-21T04:47:54.0302489Z         "unit"
2026-06-21T04:47:54.0302580Z       ],
2026-06-21T04:47:54.0302664Z       "stages": {
2026-06-21T04:47:54.0302759Z         "doc": {
2026-06-21T04:47:54.0302849Z           "complete": false,
2026-06-21T04:47:54.0302939Z           "evidence": []
2026-06-21T04:47:54.0303019Z         },
2026-06-21T04:47:54.0303108Z         "impl": {
2026-06-21T04:47:54.0303210Z           "complete": true,
2026-06-21T04:47:54.0303305Z           "evidence": [
2026-06-21T04:47:54.0303381Z             {
2026-06-21T04:47:54.0303511Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:54.0303601Z               "line": 152
2026-06-21T04:47:54.0303681Z             },
2026-06-21T04:47:54.0303772Z             {
2026-06-21T04:47:54.0303906Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:54.0304010Z               "line": 299
2026-06-21T04:47:54.0304092Z             },
2026-06-21T04:47:54.0304187Z             {
2026-06-21T04:47:54.0304311Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:54.0304406Z               "line": 443
2026-06-21T04:47:54.0304484Z             },
2026-06-21T04:47:54.0304573Z             {
2026-06-21T04:47:54.0304706Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:54.0304794Z               "line": 532
2026-06-21T04:47:54.0304878Z             },
2026-06-21T04:47:54.0304964Z             {
2026-06-21T04:47:54.0305084Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:54.0305169Z               "line": 125
2026-06-21T04:47:54.0305264Z             },
2026-06-21T04:47:54.0305346Z             {
2026-06-21T04:47:54.0305466Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:54.0305564Z               "line": 253
2026-06-21T04:47:54.0305659Z             },
2026-06-21T04:47:54.0305755Z             {
2026-06-21T04:47:54.0305874Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:54.0305968Z               "line": 264
2026-06-21T04:47:54.0306060Z             },
2026-06-21T04:47:54.0306141Z             {
2026-06-21T04:47:54.0306269Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:54.0306470Z               "line": 285
2026-06-21T04:47:54.0306555Z             },
2026-06-21T04:47:54.0306652Z             {
2026-06-21T04:47:54.0306756Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:54.0306856Z               "line": 621
2026-06-21T04:47:54.0306937Z             },
2026-06-21T04:47:54.0307024Z             {
2026-06-21T04:47:54.0307133Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:54.0307228Z               "line": 680
2026-06-21T04:47:54.0307325Z             },
2026-06-21T04:47:54.0307400Z             {
2026-06-21T04:47:54.0307528Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T04:47:54.0307701Z               "line": 61
2026-06-21T04:47:54.0307781Z             },
2026-06-21T04:47:54.0307861Z             {
2026-06-21T04:47:54.0307990Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T04:47:54.0308079Z               "line": 90
2026-06-21T04:47:54.0308169Z             },
2026-06-21T04:47:54.0308259Z             {
2026-06-21T04:47:54.0308379Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T04:47:54.0308465Z               "line": 125
2026-06-21T04:47:54.0308545Z             },
2026-06-21T04:47:54.0308627Z             {
2026-06-21T04:47:54.0308755Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-21T04:47:54.0308840Z               "line": 9
2026-06-21T04:47:54.0308923Z             },
2026-06-21T04:47:54.0309089Z             {
2026-06-21T04:47:54.0309199Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0309276Z               "line": 4093
2026-06-21T04:47:54.0309375Z             },
2026-06-21T04:47:54.0309461Z             {
2026-06-21T04:47:54.0309567Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T04:47:54.0309661Z               "line": 445
2026-06-21T04:47:54.0309733Z             }
2026-06-21T04:47:54.0309818Z           ]
2026-06-21T04:47:54.0309901Z         },
2026-06-21T04:47:54.0309990Z         "int": {
2026-06-21T04:47:54.0310086Z           "complete": false,
2026-06-21T04:47:54.0310167Z           "evidence": []
2026-06-21T04:47:54.0310258Z         },
2026-06-21T04:47:54.0310343Z         "unit": {
2026-06-21T04:47:54.0310443Z           "complete": true,
2026-06-21T04:47:54.0310531Z           "evidence": [
2026-06-21T04:47:54.0310611Z             {
2026-06-21T04:47:54.0310733Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:54.0310824Z               "line": 1356
2026-06-21T04:47:54.0310900Z             },
2026-06-21T04:47:54.0310984Z             {
2026-06-21T04:47:54.0311121Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:54.0311213Z               "line": 1713
2026-06-21T04:47:54.0311304Z             },
2026-06-21T04:47:54.0311398Z             {
2026-06-21T04:47:54.0311523Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T04:47:54.0311609Z               "line": 892
2026-06-21T04:47:54.0311703Z             },
2026-06-21T04:47:54.0311785Z             {
2026-06-21T04:47:54.0311909Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:54.0312004Z               "line": 991
2026-06-21T04:47:54.0312080Z             },
2026-06-21T04:47:54.0312167Z             {
2026-06-21T04:47:54.0312300Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:54.0312390Z               "line": 1041
2026-06-21T04:47:54.0312467Z             },
2026-06-21T04:47:54.0312552Z             {
2026-06-21T04:47:54.0312671Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:54.0312768Z               "line": 1100
2026-06-21T04:47:54.0312858Z             },
2026-06-21T04:47:54.0312943Z             {
2026-06-21T04:47:54.0313059Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T04:47:54.0313149Z               "line": 234
2026-06-21T04:47:54.0313238Z             },
2026-06-21T04:47:54.0313319Z             {
2026-06-21T04:47:54.0316306Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-21T04:47:54.0316420Z               "line": 49
2026-06-21T04:47:54.0316510Z             },
2026-06-21T04:47:54.0316601Z             {
2026-06-21T04:47:54.0316716Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0316810Z               "line": 10357
2026-06-21T04:47:54.0316892Z             },
2026-06-21T04:47:54.0316978Z             {
2026-06-21T04:47:54.0317083Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0317177Z               "line": 10463
2026-06-21T04:47:54.0317260Z             },
2026-06-21T04:47:54.0317340Z             {
2026-06-21T04:47:54.0317449Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0317669Z               "line": 10681
2026-06-21T04:47:54.0317755Z             }
2026-06-21T04:47:54.0317841Z           ]
2026-06-21T04:47:54.0317928Z         }
2026-06-21T04:47:54.0318007Z       }
2026-06-21T04:47:54.0318088Z     },
2026-06-21T04:47:54.0318175Z     {
2026-06-21T04:47:54.0318280Z       "id": "REQ-SUBNET-4",
2026-06-21T04:47:54.0318578Z       "title": "Subnet membership mutations elevation-gated (create = seed reveal; join = trust-boundary enrollment)",
2026-06-21T04:47:54.0318658Z       "requiredStages": [
2026-06-21T04:47:54.0318748Z         "impl",
2026-06-21T04:47:54.0318829Z         "unit"
2026-06-21T04:47:54.0318911Z       ],
2026-06-21T04:47:54.0319076Z       "stages": {
2026-06-21T04:47:54.0319163Z         "doc": {
2026-06-21T04:47:54.0319254Z           "complete": true,
2026-06-21T04:47:54.0319339Z           "evidence": [
2026-06-21T04:47:54.0319420Z             {
2026-06-21T04:47:54.0319578Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-21T04:47:54.0319673Z               "line": 60
2026-06-21T04:47:54.0319759Z             }
2026-06-21T04:47:54.0319841Z           ]
2026-06-21T04:47:54.0319926Z         },
2026-06-21T04:47:54.0320011Z         "impl": {
2026-06-21T04:47:54.0320102Z           "complete": true,
2026-06-21T04:47:54.0320184Z           "evidence": [
2026-06-21T04:47:54.0320274Z             {
2026-06-21T04:47:54.0320383Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0320461Z               "line": 3399
2026-06-21T04:47:54.0320550Z             },
2026-06-21T04:47:54.0320632Z             {
2026-06-21T04:47:54.0320742Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0320828Z               "line": 4859
2026-06-21T04:47:54.0320917Z             },
2026-06-21T04:47:54.0321003Z             {
2026-06-21T04:47:54.0321110Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0321194Z               "line": 4892
2026-06-21T04:47:54.0321279Z             }
2026-06-21T04:47:54.0321364Z           ]
2026-06-21T04:47:54.0321450Z         },
2026-06-21T04:47:54.0321530Z         "int": {
2026-06-21T04:47:54.0321629Z           "complete": false,
2026-06-21T04:47:54.0321720Z           "evidence": []
2026-06-21T04:47:54.0321807Z         },
2026-06-21T04:47:54.0321887Z         "unit": {
2026-06-21T04:47:54.0321987Z           "complete": true,
2026-06-21T04:47:54.0322069Z           "evidence": [
2026-06-21T04:47:54.0322150Z             {
2026-06-21T04:47:54.0322249Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0322330Z               "line": 10120
2026-06-21T04:47:54.0322417Z             },
2026-06-21T04:47:54.0322498Z             {
2026-06-21T04:47:54.0322606Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0322694Z               "line": 10194
2026-06-21T04:47:54.0322774Z             }
2026-06-21T04:47:54.0322846Z           ]
2026-06-21T04:47:54.0322926Z         }
2026-06-21T04:47:54.0323009Z       }
2026-06-21T04:47:54.0323094Z     },
2026-06-21T04:47:54.0323184Z     {
2026-06-21T04:47:54.0323280Z       "id": "REQ-SUBNET-5",
2026-06-21T04:47:54.0324431Z       "title": "Per-subnet serve-state: spt subnet detach <NAME> [--save] / attach <NAME> [--save] — daemon keeps running, stops/starts advertising + connecting for that subnet (peer pump + responder selective); --save persists the startup default in daemon config; the all-attached banner gains per-subnet states (M8 decision 6, --save renamed from --auto per decision 25 session)",
2026-06-21T04:47:54.0324665Z       "requiredStages": [
2026-06-21T04:47:54.0324750Z         "impl",
2026-06-21T04:47:54.0324835Z         "unit",
2026-06-21T04:47:54.0324917Z         "int"
2026-06-21T04:47:54.0325003Z       ],
2026-06-21T04:47:54.0325093Z       "stages": {
2026-06-21T04:47:54.0325178Z         "doc": {
2026-06-21T04:47:54.0325275Z           "complete": false,
2026-06-21T04:47:54.0325364Z           "evidence": []
2026-06-21T04:47:54.0325450Z         },
2026-06-21T04:47:54.0325531Z         "impl": {
2026-06-21T04:47:54.0325727Z           "complete": true,
2026-06-21T04:47:54.0325818Z           "evidence": [
2026-06-21T04:47:54.0325899Z             {
2026-06-21T04:47:54.0326031Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T04:47:54.0326118Z               "line": 128
2026-06-21T04:47:54.0326209Z             },
2026-06-21T04:47:54.0326304Z             {
2026-06-21T04:47:54.0326432Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T04:47:54.0326520Z               "line": 413
2026-06-21T04:47:54.0326601Z             },
2026-06-21T04:47:54.0326679Z             {
2026-06-21T04:47:54.0326798Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T04:47:54.0326880Z               "line": 74
2026-06-21T04:47:54.0326971Z             },
2026-06-21T04:47:54.0327056Z             {
2026-06-21T04:47:54.0327180Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T04:47:54.0327266Z               "line": 332
2026-06-21T04:47:54.0327356Z             },
2026-06-21T04:47:54.0327442Z             {
2026-06-21T04:47:54.0327562Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T04:47:54.0327643Z               "line": 621
2026-06-21T04:47:54.0327742Z             },
2026-06-21T04:47:54.0327830Z             {
2026-06-21T04:47:54.0327958Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T04:47:54.0328048Z               "line": 31
2026-06-21T04:47:54.0328135Z             },
2026-06-21T04:47:54.0328215Z             {
2026-06-21T04:47:54.0328339Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T04:47:54.0328430Z               "line": 50
2026-06-21T04:47:54.0328516Z             },
2026-06-21T04:47:54.0328601Z             {
2026-06-21T04:47:54.0328725Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T04:47:54.0328808Z               "line": 69
2026-06-21T04:47:54.0328896Z             },
2026-06-21T04:47:54.0329067Z             {
2026-06-21T04:47:54.0329190Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T04:47:54.0329289Z               "line": 113
2026-06-21T04:47:54.0329365Z             },
2026-06-21T04:47:54.0329447Z             {
2026-06-21T04:47:54.0329570Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T04:47:54.0329660Z               "line": 25
2026-06-21T04:47:54.0329747Z             },
2026-06-21T04:47:54.0329824Z             {
2026-06-21T04:47:54.0329952Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T04:47:54.0330038Z               "line": 34
2026-06-21T04:47:54.0330119Z             },
2026-06-21T04:47:54.0330200Z             {
2026-06-21T04:47:54.0330329Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T04:47:54.0330420Z               "line": 17
2026-06-21T04:47:54.0330505Z             },
2026-06-21T04:47:54.0330595Z             {
2026-06-21T04:47:54.0330702Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0330791Z               "line": 4817
2026-06-21T04:47:54.0330872Z             },
2026-06-21T04:47:54.0330948Z             {
2026-06-21T04:47:54.0331054Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T04:47:54.0331134Z               "line": 419
2026-06-21T04:47:54.0331215Z             }
2026-06-21T04:47:54.0331288Z           ]
2026-06-21T04:47:54.0331374Z         },
2026-06-21T04:47:54.0331554Z         "int": {
2026-06-21T04:47:54.0331641Z           "complete": true,
2026-06-21T04:47:54.0331731Z           "evidence": [
2026-06-21T04:47:54.0331816Z             {
2026-06-21T04:47:54.0331939Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T04:47:54.0332025Z               "line": 821
2026-06-21T04:47:54.0332113Z             }
2026-06-21T04:47:54.0332203Z           ]
2026-06-21T04:47:54.0332285Z         },
2026-06-21T04:47:54.0332357Z         "unit": {
2026-06-21T04:47:54.0332442Z           "complete": true,
2026-06-21T04:47:54.0332527Z           "evidence": [
2026-06-21T04:47:54.0332605Z             {
2026-06-21T04:47:54.0332824Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T04:47:54.0332905Z               "line": 341
2026-06-21T04:47:54.0332987Z             },
2026-06-21T04:47:54.0333077Z             {
2026-06-21T04:47:54.0333186Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T04:47:54.0333277Z               "line": 1115
2026-06-21T04:47:54.0333372Z             },
2026-06-21T04:47:54.0333463Z             {
2026-06-21T04:47:54.0333579Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T04:47:54.0333673Z               "line": 151
2026-06-21T04:47:54.0333754Z             },
2026-06-21T04:47:54.0333840Z             {
2026-06-21T04:47:54.0333964Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T04:47:54.0334053Z               "line": 61
2026-06-21T04:47:54.0334140Z             },
2026-06-21T04:47:54.0334222Z             {
2026-06-21T04:47:54.0334349Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T04:47:54.0334425Z               "line": 111
2026-06-21T04:47:54.0334515Z             },
2026-06-21T04:47:54.0334601Z             {
2026-06-21T04:47:54.0334713Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T04:47:54.0334799Z               "line": 138
2026-06-21T04:47:54.0334885Z             },
2026-06-21T04:47:54.0334967Z             {
2026-06-21T04:47:54.0335090Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T04:47:54.0335177Z               "line": 148
2026-06-21T04:47:54.0335262Z             },
2026-06-21T04:47:54.0335343Z             {
2026-06-21T04:47:54.0335457Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0335544Z               "line": 10021
2026-06-21T04:47:54.0335625Z             }
2026-06-21T04:47:54.0335709Z           ]
2026-06-21T04:47:54.0335792Z         }
2026-06-21T04:47:54.0335873Z       }
2026-06-21T04:47:54.0335958Z     },
2026-06-21T04:47:54.0336039Z     {
2026-06-21T04:47:54.0336126Z       "id": "REQ-SUBNET-6",
2026-06-21T04:47:54.0336808Z       "title": "Trust lifecycle verbs, elevation-gated: spt subnet leave <NAME> (membership exit) and spt subnet prune <node> (removes a dead identity's trust + registry rows, killing its dead dials; trust mutation = security surface, REQ-PAIR-6 gate machinery) (M8 decisions 6-7)",
2026-06-21T04:47:54.0336920Z       "requiredStages": [
2026-06-21T04:47:54.0337012Z         "impl",
2026-06-21T04:47:54.0337108Z         "unit"
2026-06-21T04:47:54.0337193Z       ],
2026-06-21T04:47:54.0337278Z       "stages": {
2026-06-21T04:47:54.0337368Z         "doc": {
2026-06-21T04:47:54.0337455Z           "complete": false,
2026-06-21T04:47:54.0337546Z           "evidence": []
2026-06-21T04:47:54.0337630Z         },
2026-06-21T04:47:54.0337712Z         "impl": {
2026-06-21T04:47:54.0337793Z           "complete": true,
2026-06-21T04:47:54.0337879Z           "evidence": [
2026-06-21T04:47:54.0337969Z             {
2026-06-21T04:47:54.0338089Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:54.0338180Z               "line": 254
2026-06-21T04:47:54.0338259Z             },
2026-06-21T04:47:54.0338346Z             {
2026-06-21T04:47:54.0338451Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0338546Z               "line": 4475
2026-06-21T04:47:54.0338627Z             },
2026-06-21T04:47:54.0338700Z             {
2026-06-21T04:47:54.0339076Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0339156Z               "line": 4492
2026-06-21T04:47:54.0339252Z             },
2026-06-21T04:47:54.0339339Z             {
2026-06-21T04:47:54.0339442Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0339537Z               "line": 4545
2026-06-21T04:47:54.0339618Z             },
2026-06-21T04:47:54.0339709Z             {
2026-06-21T04:47:54.0339806Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0339901Z               "line": 4568
2026-06-21T04:47:54.0339983Z             }
2026-06-21T04:47:54.0340065Z           ]
2026-06-21T04:47:54.0340150Z         },
2026-06-21T04:47:54.0340327Z         "int": {
2026-06-21T04:47:54.0340427Z           "complete": false,
2026-06-21T04:47:54.0340512Z           "evidence": []
2026-06-21T04:47:54.0340593Z         },
2026-06-21T04:47:54.0340675Z         "unit": {
2026-06-21T04:47:54.0340765Z           "complete": true,
2026-06-21T04:47:54.0340860Z           "evidence": [
2026-06-21T04:47:54.0340952Z             {
2026-06-21T04:47:54.0341051Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0341136Z               "line": 10035
2026-06-21T04:47:54.0341223Z             },
2026-06-21T04:47:54.0341309Z             {
2026-06-21T04:47:54.0341409Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0341504Z               "line": 10068
2026-06-21T04:47:54.0341581Z             },
2026-06-21T04:47:54.0341661Z             {
2026-06-21T04:47:54.0341766Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0341858Z               "line": 10077
2026-06-21T04:47:54.0341944Z             }
2026-06-21T04:47:54.0342033Z           ]
2026-06-21T04:47:54.0342114Z         }
2026-06-21T04:47:54.0342196Z       }
2026-06-21T04:47:54.0342277Z     },
2026-06-21T04:47:54.0342366Z     {
2026-06-21T04:47:54.0342461Z       "id": "REQ-SUBNET-7",
2026-06-21T04:47:54.0344061Z       "title": "Per-machine re-pair trust overwrite: registry rows carry a hashed stable machine identifier (OS machine id /etc/machine-id|MachineGuid, domain-separated SHA-256 before gossip, spt-minted persisted UUID fallback; additive serde-default field — old rows parse clean); a COMPLETED pairing ceremony presenting the same node label AND machine id as an existing trusted row evicts the superseded identity's trust + registry rows on the seed-holder and replicates the eviction; a gossiped claim alone never evicts trust (M8 decisions 13, 22)",
2026-06-21T04:47:54.0344158Z       "requiredStages": [
2026-06-21T04:47:54.0344247Z         "impl",
2026-06-21T04:47:54.0344333Z         "unit"
2026-06-21T04:47:54.0344410Z       ],
2026-06-21T04:47:54.0344500Z       "stages": {
2026-06-21T04:47:54.0344580Z         "doc": {
2026-06-21T04:47:54.0344662Z           "complete": false,
2026-06-21T04:47:54.0344744Z           "evidence": []
2026-06-21T04:47:54.0344834Z         },
2026-06-21T04:47:54.0344919Z         "impl": {
2026-06-21T04:47:54.0345013Z           "complete": true,
2026-06-21T04:47:54.0345105Z           "evidence": [
2026-06-21T04:47:54.0345189Z             {
2026-06-21T04:47:54.0345349Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T04:47:54.0345460Z               "line": 17
2026-06-21T04:47:54.0345541Z             },
2026-06-21T04:47:54.0345617Z             {
2026-06-21T04:47:54.0345742Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T04:47:54.0345837Z               "line": 103
2026-06-21T04:47:54.0345917Z             },
2026-06-21T04:47:54.0346008Z             {
2026-06-21T04:47:54.0346123Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T04:47:54.0346218Z               "line": 312
2026-06-21T04:47:54.0346308Z             },
2026-06-21T04:47:54.0346390Z             {
2026-06-21T04:47:54.0346518Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T04:47:54.0346613Z               "line": 131
2026-06-21T04:47:54.0346700Z             },
2026-06-21T04:47:54.0346776Z             {
2026-06-21T04:47:54.0347001Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:54.0347091Z               "line": 160
2026-06-21T04:47:54.0347176Z             },
2026-06-21T04:47:54.0347262Z             {
2026-06-21T04:47:54.0347392Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:54.0347481Z               "line": 447
2026-06-21T04:47:54.0347567Z             },
2026-06-21T04:47:54.0347650Z             {
2026-06-21T04:47:54.0347777Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:54.0347866Z               "line": 670
2026-06-21T04:47:54.0347943Z             },
2026-06-21T04:47:54.0348015Z             {
2026-06-21T04:47:54.0348229Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:54.0348315Z               "line": 710
2026-06-21T04:47:54.0348396Z             },
2026-06-21T04:47:54.0348481Z             {
2026-06-21T04:47:54.0348602Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:54.0348697Z               "line": 766
2026-06-21T04:47:54.0348782Z             },
2026-06-21T04:47:54.0348868Z             {
2026-06-21T04:47:54.0349073Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T04:47:54.0349158Z               "line": 136
2026-06-21T04:47:54.0349246Z             },
2026-06-21T04:47:54.0349317Z             {
2026-06-21T04:47:54.0349431Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:54.0349517Z               "line": 139
2026-06-21T04:47:54.0349598Z             }
2026-06-21T04:47:54.0349683Z           ]
2026-06-21T04:47:54.0349769Z         },
2026-06-21T04:47:54.0349850Z         "int": {
2026-06-21T04:47:54.0349951Z           "complete": false,
2026-06-21T04:47:54.0350045Z           "evidence": []
2026-06-21T04:47:54.0350121Z         },
2026-06-21T04:47:54.0350202Z         "unit": {
2026-06-21T04:47:54.0350292Z           "complete": true,
2026-06-21T04:47:54.0350385Z           "evidence": [
2026-06-21T04:47:54.0350461Z             {
2026-06-21T04:47:54.0350591Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T04:47:54.0350681Z               "line": 136
2026-06-21T04:47:54.0350762Z             },
2026-06-21T04:47:54.0350848Z             {
2026-06-21T04:47:54.0350963Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T04:47:54.0351057Z               "line": 156
2026-06-21T04:47:54.0351139Z             },
2026-06-21T04:47:54.0351221Z             {
2026-06-21T04:47:54.0351353Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:54.0351434Z               "line": 987
2026-06-21T04:47:54.0351521Z             },
2026-06-21T04:47:54.0351606Z             {
2026-06-21T04:47:54.0351735Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T04:47:54.0351822Z               "line": 1009
2026-06-21T04:47:54.0351902Z             },
2026-06-21T04:47:54.0351988Z             {
2026-06-21T04:47:54.0352122Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T04:47:54.0352208Z               "line": 1419
2026-06-21T04:47:54.0352283Z             },
2026-06-21T04:47:54.0352364Z             {
2026-06-21T04:47:54.0352490Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T04:47:54.0352578Z               "line": 1036
2026-06-21T04:47:54.0352665Z             }
2026-06-21T04:47:54.0352752Z           ]
2026-06-21T04:47:54.0352838Z         }
2026-06-21T04:47:54.0352922Z       }
2026-06-21T04:47:54.0353011Z     },
2026-06-21T04:47:54.0353098Z     {
2026-06-21T04:47:54.0353197Z       "id": "REQ-SUBNET-8",
2026-06-21T04:47:54.0354273Z       "title": "Status render honesty: zero-subnet text is daemon-aware ('No subnets registered — this node is standalone.' + daemon-running-dependent blurb, never implying messaging works while the daemon is down); hint footer prints on bare spt subnet only (status drops it); a stalled pump is surfaced in subnet status, never rendered implied-healthy (M8 decisions 11-12, 23)",
2026-06-21T04:47:54.0354379Z       "requiredStages": [
2026-06-21T04:47:54.0354573Z         "impl",
2026-06-21T04:47:54.0354655Z         "unit"
2026-06-21T04:47:54.0354741Z       ],
2026-06-21T04:47:54.0354831Z       "stages": {
2026-06-21T04:47:54.0354917Z         "doc": {
2026-06-21T04:47:54.0355004Z           "complete": false,
2026-06-21T04:47:54.0355089Z           "evidence": []
2026-06-21T04:47:54.0355169Z         },
2026-06-21T04:47:54.0355265Z         "impl": {
2026-06-21T04:47:54.0355348Z           "complete": true,
2026-06-21T04:47:54.0355441Z           "evidence": [
2026-06-21T04:47:54.0355517Z             {
2026-06-21T04:47:54.0355631Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0355820Z               "line": 3835
2026-06-21T04:47:54.0355909Z             },
2026-06-21T04:47:54.0355996Z             {
2026-06-21T04:47:54.0356097Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0356186Z               "line": 3864
2026-06-21T04:47:54.0356267Z             },
2026-06-21T04:47:54.0356345Z             {
2026-06-21T04:47:54.0356454Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0356544Z               "line": 3881
2026-06-21T04:47:54.0356636Z             },
2026-06-21T04:47:54.0356721Z             {
2026-06-21T04:47:54.0356825Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0356912Z               "line": 3904
2026-06-21T04:47:54.0356997Z             },
2026-06-21T04:47:54.0357073Z             {
2026-06-21T04:47:54.0357178Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0357266Z               "line": 4318
2026-06-21T04:47:54.0357350Z             }
2026-06-21T04:47:54.0357431Z           ]
2026-06-21T04:47:54.0357527Z         },
2026-06-21T04:47:54.0357627Z         "int": {
2026-06-21T04:47:54.0357726Z           "complete": false,
2026-06-21T04:47:54.0357827Z           "evidence": []
2026-06-21T04:47:54.0357909Z         },
2026-06-21T04:47:54.0357989Z         "unit": {
2026-06-21T04:47:54.0358089Z           "complete": true,
2026-06-21T04:47:54.0358181Z           "evidence": [
2026-06-21T04:47:54.0358267Z             {
2026-06-21T04:47:54.0358370Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0358460Z               "line": 10225
2026-06-21T04:47:54.0358551Z             },
2026-06-21T04:47:54.0358638Z             {
2026-06-21T04:47:54.0358741Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0358822Z               "line": 10241
2026-06-21T04:47:54.0358914Z             }
2026-06-21T04:47:54.0359094Z           ]
2026-06-21T04:47:54.0359162Z         }
2026-06-21T04:47:54.0359252Z       }
2026-06-21T04:47:54.0359338Z     },
2026-06-21T04:47:54.0359418Z     {
2026-06-21T04:47:54.0359519Z       "id": "REQ-TERM-1",
2026-06-21T04:47:54.0359695Z       "title": "Process-supervisor terminal wrapper hosting broker PTYs",
2026-06-21T04:47:54.0359791Z       "requiredStages": [
2026-06-21T04:47:54.0359877Z         "impl",
2026-06-21T04:47:54.0359967Z         "unit"
2026-06-21T04:47:54.0360047Z       ],
2026-06-21T04:47:54.0360149Z       "stages": {
2026-06-21T04:47:54.0360234Z         "doc": {
2026-06-21T04:47:54.0360329Z           "complete": false,
2026-06-21T04:47:54.0360411Z           "evidence": []
2026-06-21T04:47:54.0360497Z         },
2026-06-21T04:47:54.0360582Z         "impl": {
2026-06-21T04:47:54.0360667Z           "complete": true,
2026-06-21T04:47:54.0360757Z           "evidence": [
2026-06-21T04:47:54.0360838Z             {
2026-06-21T04:47:54.0360960Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T04:47:54.0361040Z               "line": 59
2026-06-21T04:47:54.0361122Z             },
2026-06-21T04:47:54.0361205Z             {
2026-06-21T04:47:54.0361317Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T04:47:54.0361409Z               "line": 234
2026-06-21T04:47:54.0361490Z             },
2026-06-21T04:47:54.0361575Z             {
2026-06-21T04:47:54.0361689Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T04:47:54.0361772Z               "line": 100
2026-06-21T04:47:54.0361956Z             }
2026-06-21T04:47:54.0362043Z           ]
2026-06-21T04:47:54.0362129Z         },
2026-06-21T04:47:54.0362214Z         "int": {
2026-06-21T04:47:54.0362314Z           "complete": false,
2026-06-21T04:47:54.0362406Z           "evidence": []
2026-06-21T04:47:54.0362490Z         },
2026-06-21T04:47:54.0362581Z         "unit": {
2026-06-21T04:47:54.0362663Z           "complete": true,
2026-06-21T04:47:54.0362754Z           "evidence": [
2026-06-21T04:47:54.0362828Z             {
2026-06-21T04:47:54.0362949Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T04:47:54.0363045Z               "line": 24
2026-06-21T04:47:54.0363125Z             },
2026-06-21T04:47:54.0363312Z             {
2026-06-21T04:47:54.0363435Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T04:47:54.0363510Z               "line": 56
2026-06-21T04:47:54.0363595Z             }
2026-06-21T04:47:54.0363682Z           ]
2026-06-21T04:47:54.0363771Z         }
2026-06-21T04:47:54.0363855Z       }
2026-06-21T04:47:54.0363942Z     },
2026-06-21T04:47:54.0364023Z     {
2026-06-21T04:47:54.0364123Z       "id": "REQ-TERM-2",
2026-06-21T04:47:54.0364300Z       "title": "session-surface abstraction; send-keys + send-line injection",
2026-06-21T04:47:54.0364395Z       "requiredStages": [
2026-06-21T04:47:54.0364480Z         "impl",
2026-06-21T04:47:54.0364561Z         "unit"
2026-06-21T04:47:54.0364644Z       ],
2026-06-21T04:47:54.0364729Z       "stages": {
2026-06-21T04:47:54.0364814Z         "doc": {
2026-06-21T04:47:54.0364900Z           "complete": false,
2026-06-21T04:47:54.0364996Z           "evidence": []
2026-06-21T04:47:54.0365082Z         },
2026-06-21T04:47:54.0365177Z         "impl": {
2026-06-21T04:47:54.0365273Z           "complete": true,
2026-06-21T04:47:54.0365353Z           "evidence": [
2026-06-21T04:47:54.0365443Z             {
2026-06-21T04:47:54.0365564Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T04:47:54.0365658Z               "line": 117
2026-06-21T04:47:54.0365744Z             },
2026-06-21T04:47:54.0365830Z             {
2026-06-21T04:47:54.0365941Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T04:47:54.0366025Z               "line": 127
2026-06-21T04:47:54.0366115Z             }
2026-06-21T04:47:54.0366200Z           ]
2026-06-21T04:47:54.0366295Z         },
2026-06-21T04:47:54.0366380Z         "int": {
2026-06-21T04:47:54.0366474Z           "complete": false,
2026-06-21T04:47:54.0366571Z           "evidence": []
2026-06-21T04:47:54.0366657Z         },
2026-06-21T04:47:54.0366742Z         "unit": {
2026-06-21T04:47:54.0366837Z           "complete": true,
2026-06-21T04:47:54.0366929Z           "evidence": [
2026-06-21T04:47:54.0367009Z             {
2026-06-21T04:47:54.0367128Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-21T04:47:54.0367210Z               "line": 46
2026-06-21T04:47:54.0367296Z             },
2026-06-21T04:47:54.0367385Z             {
2026-06-21T04:47:54.0367496Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-21T04:47:54.0367595Z               "line": 77
2026-06-21T04:47:54.0367681Z             }
2026-06-21T04:47:54.0367762Z           ]
2026-06-21T04:47:54.0367868Z         }
2026-06-21T04:47:54.0367963Z       }
2026-06-21T04:47:54.0368039Z     },
2026-06-21T04:47:54.0368126Z     {
2026-06-21T04:47:54.0368211Z       "id": "REQ-TERM-3",
2026-06-21T04:47:54.0368339Z       "title": "Byte-stream remote terminal streaming for v1",
2026-06-21T04:47:54.0368441Z       "requiredStages": [
2026-06-21T04:47:54.0368516Z         "impl",
2026-06-21T04:47:54.0368601Z         "unit"
2026-06-21T04:47:54.0368692Z       ],
2026-06-21T04:47:54.0368780Z       "stages": {
2026-06-21T04:47:54.0368873Z         "doc": {
2026-06-21T04:47:54.0369044Z           "complete": false,
2026-06-21T04:47:54.0369145Z           "evidence": []
2026-06-21T04:47:54.0369235Z         },
2026-06-21T04:47:54.0369334Z         "impl": {
2026-06-21T04:47:54.0369431Z           "complete": true,
2026-06-21T04:47:54.0369521Z           "evidence": [
2026-06-21T04:47:54.0369712Z             {
2026-06-21T04:47:54.0369831Z               "path": "crates/spt-term/src/stream.rs",
2026-06-21T04:47:54.0369921Z               "line": 71
2026-06-21T04:47:54.0370012Z             }
2026-06-21T04:47:54.0370094Z           ]
2026-06-21T04:47:54.0370184Z         },
2026-06-21T04:47:54.0370265Z         "int": {
2026-06-21T04:47:54.0370361Z           "complete": false,
2026-06-21T04:47:54.0370447Z           "evidence": []
2026-06-21T04:47:54.0370527Z         },
2026-06-21T04:47:54.0370617Z         "unit": {
2026-06-21T04:47:54.0370705Z           "complete": true,
2026-06-21T04:47:54.0370794Z           "evidence": [
2026-06-21T04:47:54.0370980Z             {
2026-06-21T04:47:54.0371100Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-21T04:47:54.0371179Z               "line": 37
2026-06-21T04:47:54.0371270Z             },
2026-06-21T04:47:54.0371351Z             {
2026-06-21T04:47:54.0371464Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-21T04:47:54.0371563Z               "line": 67
2026-06-21T04:47:54.0371640Z             }
2026-06-21T04:47:54.0371726Z           ]
2026-06-21T04:47:54.0371811Z         }
2026-06-21T04:47:54.0371896Z       }
2026-06-21T04:47:54.0371983Z     },
2026-06-21T04:47:54.0372069Z     {
2026-06-21T04:47:54.0372168Z       "id": "REQ-TERM-4",
2026-06-21T04:47:54.0372622Z       "title": "Live activity buffer (session digest): projection of normalized session logs, snapshot-pull (spt endpoint digest) + structured-delta-stream contract + api digest-entry push",
2026-06-21T04:47:54.0372726Z       "requiredStages": [
2026-06-21T04:47:54.0372817Z         "impl",
2026-06-21T04:47:54.0372903Z         "unit",
2026-06-21T04:47:54.0372994Z         "int"
2026-06-21T04:47:54.0373080Z       ],
2026-06-21T04:47:54.0373165Z       "stages": {
2026-06-21T04:47:54.0373252Z         "doc": {
2026-06-21T04:47:54.0373351Z           "complete": false,
2026-06-21T04:47:54.0373437Z           "evidence": []
2026-06-21T04:47:54.0373514Z         },
2026-06-21T04:47:54.0373600Z         "impl": {
2026-06-21T04:47:54.0373685Z           "complete": true,
2026-06-21T04:47:54.0373780Z           "evidence": [
2026-06-21T04:47:54.0373853Z             {
2026-06-21T04:47:54.0373977Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T04:47:54.0374065Z               "line": 37
2026-06-21T04:47:54.0374146Z             },
2026-06-21T04:47:54.0374227Z             {
2026-06-21T04:47:54.0374354Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T04:47:54.0374449Z               "line": 25
2026-06-21T04:47:54.0374531Z             },
2026-06-21T04:47:54.0374617Z             {
2026-06-21T04:47:54.0374749Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T04:47:54.0374831Z               "line": 114
2026-06-21T04:47:54.0374917Z             },
2026-06-21T04:47:54.0374998Z             {
2026-06-21T04:47:54.0375126Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T04:47:54.0375208Z               "line": 267
2026-06-21T04:47:54.0375299Z             },
2026-06-21T04:47:54.0375388Z             {
2026-06-21T04:47:54.0375504Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T04:47:54.0375589Z               "line": 289
2026-06-21T04:47:54.0375670Z             },
2026-06-21T04:47:54.0375756Z             {
2026-06-21T04:47:54.0375871Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T04:47:54.0375965Z               "line": 307
2026-06-21T04:47:54.0376061Z             },
2026-06-21T04:47:54.0376138Z             {
2026-06-21T04:47:54.0376270Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T04:47:54.0376371Z               "line": 33
2026-06-21T04:47:54.0376458Z             },
2026-06-21T04:47:54.0376548Z             {
2026-06-21T04:47:54.0376675Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T04:47:54.0376770Z               "line": 52
2026-06-21T04:47:54.0376856Z             },
2026-06-21T04:47:54.0376944Z             {
2026-06-21T04:47:54.0377141Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T04:47:54.0377231Z               "line": 180
2026-06-21T04:47:54.0377316Z             },
2026-06-21T04:47:54.0377398Z             {
2026-06-21T04:47:54.0377507Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T04:47:54.0377602Z               "line": 190
2026-06-21T04:47:54.0377693Z             },
2026-06-21T04:47:54.0377771Z             {
2026-06-21T04:47:54.0377893Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T04:47:54.0377979Z               "line": 250
2026-06-21T04:47:54.0378066Z             },
2026-06-21T04:47:54.0378151Z             {
2026-06-21T04:47:54.0378366Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:54.0378466Z               "line": 284
2026-06-21T04:47:54.0378542Z             },
2026-06-21T04:47:54.0378623Z             {
2026-06-21T04:47:54.0378743Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:54.0378827Z               "line": 295
2026-06-21T04:47:54.0378914Z             },
2026-06-21T04:47:54.0379077Z             {
2026-06-21T04:47:54.0379186Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0379277Z               "line": 1193
2026-06-21T04:47:54.0379368Z             }
2026-06-21T04:47:54.0379452Z           ]
2026-06-21T04:47:54.0379538Z         },
2026-06-21T04:47:54.0379619Z         "int": {
2026-06-21T04:47:54.0379715Z           "complete": true,
2026-06-21T04:47:54.0379800Z           "evidence": [
2026-06-21T04:47:54.0379880Z             {
2026-06-21T04:47:54.0380005Z               "path": "crates/spt-daemon/tests/digest.rs",
2026-06-21T04:47:54.0380105Z               "line": 18
2026-06-21T04:47:54.0380191Z             }
2026-06-21T04:47:54.0380277Z           ]
2026-06-21T04:47:54.0380349Z         },
2026-06-21T04:47:54.0380439Z         "unit": {
2026-06-21T04:47:54.0380529Z           "complete": true,
2026-06-21T04:47:54.0380626Z           "evidence": [
2026-06-21T04:47:54.0380720Z             {
2026-06-21T04:47:54.0380829Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T04:47:54.0380916Z               "line": 364
2026-06-21T04:47:54.0380997Z             },
2026-06-21T04:47:54.0381082Z             {
2026-06-21T04:47:54.0381197Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T04:47:54.0381288Z               "line": 416
2026-06-21T04:47:54.0381373Z             },
2026-06-21T04:47:54.0381449Z             {
2026-06-21T04:47:54.0381570Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T04:47:54.0381655Z               "line": 426
2026-06-21T04:47:54.0381740Z             },
2026-06-21T04:47:54.0381820Z             {
2026-06-21T04:47:54.0381949Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T04:47:54.0382038Z               "line": 436
2026-06-21T04:47:54.0382118Z             },
2026-06-21T04:47:54.0382200Z             {
2026-06-21T04:47:54.0382315Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T04:47:54.0382419Z               "line": 456
2026-06-21T04:47:54.0382500Z             },
2026-06-21T04:47:54.0382587Z             {
2026-06-21T04:47:54.0382700Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T04:47:54.0382785Z               "line": 478
2026-06-21T04:47:54.0382868Z             },
2026-06-21T04:47:54.0385619Z             {
2026-06-21T04:47:54.0385773Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T04:47:54.0385854Z               "line": 491
2026-06-21T04:47:54.0385943Z             },
2026-06-21T04:47:54.0386025Z             {
2026-06-21T04:47:54.0386168Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T04:47:54.0386321Z               "line": 502
2026-06-21T04:47:54.0386403Z             },
2026-06-21T04:47:54.0386492Z             {
2026-06-21T04:47:54.0386612Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T04:47:54.0386708Z               "line": 108
2026-06-21T04:47:54.0386798Z             },
2026-06-21T04:47:54.0387013Z             {
2026-06-21T04:47:54.0387136Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T04:47:54.0387231Z               "line": 119
2026-06-21T04:47:54.0387316Z             },
2026-06-21T04:47:54.0387397Z             {
2026-06-21T04:47:54.0387504Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T04:47:54.0387590Z               "line": 127
2026-06-21T04:47:54.0387672Z             },
2026-06-21T04:47:54.0387754Z             {
2026-06-21T04:47:54.0387881Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T04:47:54.0387963Z               "line": 474
2026-06-21T04:47:54.0388053Z             },
2026-06-21T04:47:54.0388234Z             {
2026-06-21T04:47:54.0388354Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T04:47:54.0388440Z               "line": 501
2026-06-21T04:47:54.0388525Z             },
2026-06-21T04:47:54.0388607Z             {
2026-06-21T04:47:54.0388730Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T04:47:54.0388830Z               "line": 520
2026-06-21T04:47:54.0388912Z             },
2026-06-21T04:47:54.0389074Z             {
2026-06-21T04:47:54.0389183Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T04:47:54.0389275Z               "line": 535
2026-06-21T04:47:54.0389359Z             },
2026-06-21T04:47:54.0389440Z             {
2026-06-21T04:47:54.0389561Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T04:47:54.0389651Z               "line": 561
2026-06-21T04:47:54.0389736Z             },
2026-06-21T04:47:54.0389818Z             {
2026-06-21T04:47:54.0389943Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T04:47:54.0390036Z               "line": 581
2026-06-21T04:47:54.0390130Z             },
2026-06-21T04:47:54.0390207Z             {
2026-06-21T04:47:54.0390318Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T04:47:54.0390407Z               "line": 591
2026-06-21T04:47:54.0390488Z             },
2026-06-21T04:47:54.0390580Z             {
2026-06-21T04:47:54.0390698Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T04:47:54.0390788Z               "line": 683
2026-06-21T04:47:54.0390876Z             },
2026-06-21T04:47:54.0390956Z             {
2026-06-21T04:47:54.0391080Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:54.0391171Z               "line": 885
2026-06-21T04:47:54.0391252Z             },
2026-06-21T04:47:54.0391333Z             {
2026-06-21T04:47:54.0391432Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0391520Z               "line": 9792
2026-06-21T04:47:54.0391599Z             }
2026-06-21T04:47:54.0391690Z           ]
2026-06-21T04:47:54.0391777Z         }
2026-06-21T04:47:54.0391858Z       }
2026-06-21T04:47:54.0391942Z     },
2026-06-21T04:47:54.0392029Z     {
2026-06-21T04:47:54.0392130Z       "id": "REQ-TERM-5",
2026-06-21T04:47:54.0393627Z       "title": "Adapter-declared digest extractor seam: a `[digest]` manifest section declaring an imperative extractor (native harness log -> the {role,text,tool,ts} contract; defaults to the [history] source files with an own-source escape hatch), `api digest-entry` push fallback, register-time validation of the section, adapter-declared presentation defaults (window depth, arg-truncation, sprint-collapse) that any consumer may override, and a `spt adapter digest-proof` author tool plus runtime skip-diagnostics (no silent drop). Reverses M9's no-manifest-seam stance; no declarative DSL.",
2026-06-21T04:47:54.0393734Z       "requiredStages": [
2026-06-21T04:47:54.0393819Z         "doc",
2026-06-21T04:47:54.0393904Z         "impl",
2026-06-21T04:47:54.0393985Z         "unit",
2026-06-21T04:47:54.0394072Z         "int"
2026-06-21T04:47:54.0394152Z       ],
2026-06-21T04:47:54.0394238Z       "stages": {
2026-06-21T04:47:54.0394319Z         "doc": {
2026-06-21T04:47:54.0394420Z           "complete": true,
2026-06-21T04:47:54.0394500Z           "evidence": [
2026-06-21T04:47:54.0394702Z             {
2026-06-21T04:47:54.0394810Z               "path": "docs/MANIFEST.md",
2026-06-21T04:47:54.0394891Z               "line": 234
2026-06-21T04:47:54.0394978Z             }
2026-06-21T04:47:54.0395064Z           ]
2026-06-21T04:47:54.0395143Z         },
2026-06-21T04:47:54.0395224Z         "impl": {
2026-06-21T04:47:54.0395324Z           "complete": true,
2026-06-21T04:47:54.0395409Z           "evidence": [
2026-06-21T04:47:54.0395494Z             {
2026-06-21T04:47:54.0395622Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T04:47:54.0395699Z               "line": 75
2026-06-21T04:47:54.0395794Z             },
2026-06-21T04:47:54.0395966Z             {
2026-06-21T04:47:54.0396085Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T04:47:54.0396175Z               "line": 131
2026-06-21T04:47:54.0396271Z             },
2026-06-21T04:47:54.0396352Z             {
2026-06-21T04:47:54.0396471Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T04:47:54.0396576Z               "line": 22
2026-06-21T04:47:54.0396657Z             },
2026-06-21T04:47:54.0396738Z             {
2026-06-21T04:47:54.0396852Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T04:47:54.0396935Z               "line": 87
2026-06-21T04:47:54.0397006Z             },
2026-06-21T04:47:54.0397090Z             {
2026-06-21T04:47:54.0397206Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T04:47:54.0397287Z               "line": 30
2026-06-21T04:47:54.0397377Z             },
2026-06-21T04:47:54.0397458Z             {
2026-06-21T04:47:54.0397588Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T04:47:54.0397696Z               "line": 103
2026-06-21T04:47:54.0397786Z             },
2026-06-21T04:47:54.0397886Z             {
2026-06-21T04:47:54.0398004Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T04:47:54.0398093Z               "line": 167
2026-06-21T04:47:54.0398174Z             },
2026-06-21T04:47:54.0398271Z             {
2026-06-21T04:47:54.0398389Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T04:47:54.0398479Z               "line": 434
2026-06-21T04:47:54.0398566Z             },
2026-06-21T04:47:54.0398647Z             {
2026-06-21T04:47:54.0398756Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0398843Z               "line": 5650
2026-06-21T04:47:54.0398929Z             },
2026-06-21T04:47:54.0399099Z             {
2026-06-21T04:47:54.0399196Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0399281Z               "line": 5957
2026-06-21T04:47:54.0399366Z             }
2026-06-21T04:47:54.0399452Z           ]
2026-06-21T04:47:54.0399530Z         },
2026-06-21T04:47:54.0399619Z         "int": {
2026-06-21T04:47:54.0399714Z           "complete": true,
2026-06-21T04:47:54.0399797Z           "evidence": [
2026-06-21T04:47:54.0399882Z             {
2026-06-21T04:47:54.0400029Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T04:47:54.0400126Z               "line": 17
2026-06-21T04:47:54.0400202Z             }
2026-06-21T04:47:54.0400286Z           ]
2026-06-21T04:47:54.0400373Z         },
2026-06-21T04:47:54.0400460Z         "unit": {
2026-06-21T04:47:54.0400554Z           "complete": true,
2026-06-21T04:47:54.0400639Z           "evidence": [
2026-06-21T04:47:54.0400724Z             {
2026-06-21T04:47:54.0400844Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T04:47:54.0400930Z               "line": 375
2026-06-21T04:47:54.0401015Z             },
2026-06-21T04:47:54.0401096Z             {
2026-06-21T04:47:54.0401207Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T04:47:54.0401287Z               "line": 162
2026-06-21T04:47:54.0401373Z             },
2026-06-21T04:47:54.0401460Z             {
2026-06-21T04:47:54.0401569Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T04:47:54.0401654Z               "line": 179
2026-06-21T04:47:54.0401736Z             },
2026-06-21T04:47:54.0401921Z             {
2026-06-21T04:47:54.0402027Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T04:47:54.0402118Z               "line": 201
2026-06-21T04:47:54.0402203Z             },
2026-06-21T04:47:54.0402288Z             {
2026-06-21T04:47:54.0402395Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T04:47:54.0402479Z               "line": 212
2026-06-21T04:47:54.0402560Z             },
2026-06-21T04:47:54.0402646Z             {
2026-06-21T04:47:54.0402757Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T04:47:54.0402836Z               "line": 223
2026-06-21T04:47:54.0402917Z             },
2026-06-21T04:47:54.0403097Z             {
2026-06-21T04:47:54.0403220Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:54.0403310Z               "line": 1525
2026-06-21T04:47:54.0403387Z             },
2026-06-21T04:47:54.0403472Z             {
2026-06-21T04:47:54.0403586Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:54.0403683Z               "line": 1568
2026-06-21T04:47:54.0403773Z             },
2026-06-21T04:47:54.0403854Z             {
2026-06-21T04:47:54.0403964Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T04:47:54.0404045Z               "line": 606
2026-06-21T04:47:54.0404130Z             },
2026-06-21T04:47:54.0404202Z             {
2026-06-21T04:47:54.0404318Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T04:47:54.0404407Z               "line": 634
2026-06-21T04:47:54.0404483Z             },
2026-06-21T04:47:54.0404569Z             {
2026-06-21T04:47:54.0404684Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T04:47:54.0404783Z               "line": 646
2026-06-21T04:47:54.0404864Z             },
2026-06-21T04:47:54.0404952Z             {
2026-06-21T04:47:54.0405074Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T04:47:54.0405160Z               "line": 669
2026-06-21T04:47:54.0405243Z             },
2026-06-21T04:47:54.0405332Z             {
2026-06-21T04:47:54.0405437Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0405529Z               "line": 8503
2026-06-21T04:47:54.0405610Z             },
2026-06-21T04:47:54.0405694Z             {
2026-06-21T04:47:54.0405798Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0405894Z               "line": 8561
2026-06-21T04:47:54.0405974Z             }
2026-06-21T04:47:54.0406063Z           ]
2026-06-21T04:47:54.0406148Z         }
2026-06-21T04:47:54.0406230Z       }
2026-06-21T04:47:54.0406316Z     },
2026-06-21T04:47:54.0406397Z     {
2026-06-21T04:47:54.0406487Z       "id": "REQ-TERM-6",
2026-06-21T04:47:54.0407570Z       "title": "Thread-spanning digest across session boundaries: a per-endpoint session ledger (`<perch>/sessions.log`) appended at first bind and by `api boundary` on `/clear`|`/compact` session rotation, the digest enumerating the last K sessions so its rolling window bridges a boundary, and a distinctive in-timeline boundary marker (DigestEntry::Boundary). The digest follows the live-agent thread, not a single session.",
2026-06-21T04:47:54.0407665Z       "requiredStages": [
2026-06-21T04:47:54.0407746Z         "impl",
2026-06-21T04:47:54.0407833Z         "unit",
2026-06-21T04:47:54.0407913Z         "int"
2026-06-21T04:47:54.0407989Z       ],
2026-06-21T04:47:54.0408076Z       "stages": {
2026-06-21T04:47:54.0408157Z         "doc": {
2026-06-21T04:47:54.0408256Z           "complete": false,
2026-06-21T04:47:54.0408341Z           "evidence": []
2026-06-21T04:47:54.0408427Z         },
2026-06-21T04:47:54.0408513Z         "impl": {
2026-06-21T04:47:54.0408611Z           "complete": true,
2026-06-21T04:47:54.0408710Z           "evidence": [
2026-06-21T04:47:54.0408797Z             {
2026-06-21T04:47:54.0408921Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T04:47:54.0409098Z               "line": 132
2026-06-21T04:47:54.0409169Z             },
2026-06-21T04:47:54.0409255Z             {
2026-06-21T04:47:54.0409498Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T04:47:54.0409584Z               "line": 187
2026-06-21T04:47:54.0409669Z             },
2026-06-21T04:47:54.0409751Z             {
2026-06-21T04:47:54.0409874Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T04:47:54.0409964Z               "line": 17
2026-06-21T04:47:54.0410052Z             },
2026-06-21T04:47:54.0410137Z             {
2026-06-21T04:47:54.0410260Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T04:47:54.0410352Z               "line": 104
2026-06-21T04:47:54.0410438Z             },
2026-06-21T04:47:54.0410522Z             {
2026-06-21T04:47:54.0410743Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T04:47:54.0410823Z               "line": 319
2026-06-21T04:47:54.0410904Z             },
2026-06-21T04:47:54.0410982Z             {
2026-06-21T04:47:54.0411100Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T04:47:54.0411194Z               "line": 396
2026-06-21T04:47:54.0411275Z             }
2026-06-21T04:47:54.0411361Z           ]
2026-06-21T04:47:54.0411448Z         },
2026-06-21T04:47:54.0411532Z         "int": {
2026-06-21T04:47:54.0411613Z           "complete": true,
2026-06-21T04:47:54.0411701Z           "evidence": [
2026-06-21T04:47:54.0411782Z             {
2026-06-21T04:47:54.0411933Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T04:47:54.0412020Z               "line": 18
2026-06-21T04:47:54.0412101Z             }
2026-06-21T04:47:54.0412185Z           ]
2026-06-21T04:47:54.0412267Z         },
2026-06-21T04:47:54.0412363Z         "unit": {
2026-06-21T04:47:54.0412458Z           "complete": true,
2026-06-21T04:47:54.0412553Z           "evidence": [
2026-06-21T04:47:54.0412630Z             {
2026-06-21T04:47:54.0412758Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T04:47:54.0412844Z               "line": 135
2026-06-21T04:47:54.0412926Z             },
2026-06-21T04:47:54.0413021Z             {
2026-06-21T04:47:54.0413139Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T04:47:54.0413226Z               "line": 150
2026-06-21T04:47:54.0413312Z             },
2026-06-21T04:47:54.0413391Z             {
2026-06-21T04:47:54.0413500Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T04:47:54.0413582Z               "line": 166
2026-06-21T04:47:54.0413667Z             },
2026-06-21T04:47:54.0413751Z             {
2026-06-21T04:47:54.0413866Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T04:47:54.0413947Z               "line": 257
2026-06-21T04:47:54.0414033Z             },
2026-06-21T04:47:54.0414128Z             {
2026-06-21T04:47:54.0414243Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T04:47:54.0414334Z               "line": 738
2026-06-21T04:47:54.0414418Z             },
2026-06-21T04:47:54.0414500Z             {
2026-06-21T04:47:54.0414605Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T04:47:54.0414695Z               "line": 759
2026-06-21T04:47:54.0414781Z             },
2026-06-21T04:47:54.0414863Z             {
2026-06-21T04:47:54.0414987Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T04:47:54.0415072Z               "line": 726
2026-06-21T04:47:54.0415154Z             }
2026-06-21T04:47:54.0415235Z           ]
2026-06-21T04:47:54.0415325Z         }
2026-06-21T04:47:54.0415411Z       }
2026-06-21T04:47:54.0415493Z     },
2026-06-21T04:47:54.0415578Z     {
2026-06-21T04:47:54.0415663Z       "id": "REQ-TERM-7",
2026-06-21T04:47:54.0416805Z       "title": "Two-origin digest merge: spt-owned context-injection entries (psyche_download | echo_mirror | owl_message) appended by spt to the endpoint `digest.log`, timestamp-interleaved with the adapter's extracted activity records into one ordered timeline, via a distinct context-injection record category. Data model only this milestone; GUI collapse/expand and the echo-reads-digest delta loop are deferred to the surfaces that consume them.",
2026-06-21T04:47:54.0416990Z       "requiredStages": [
2026-06-21T04:47:54.0417067Z         "impl",
2026-06-21T04:47:54.0417153Z         "unit",
2026-06-21T04:47:54.0417238Z         "int"
2026-06-21T04:47:54.0417319Z       ],
2026-06-21T04:47:54.0417416Z       "stages": {
2026-06-21T04:47:54.0417501Z         "doc": {
2026-06-21T04:47:54.0417600Z           "complete": false,
2026-06-21T04:47:54.0417692Z           "evidence": []
2026-06-21T04:47:54.0417773Z         },
2026-06-21T04:47:54.0417849Z         "impl": {
2026-06-21T04:47:54.0417934Z           "complete": true,
2026-06-21T04:47:54.0418025Z           "evidence": [
2026-06-21T04:47:54.0418182Z             {
2026-06-21T04:47:54.0418296Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T04:47:54.0418379Z               "line": 133
2026-06-21T04:47:54.0418464Z             },
2026-06-21T04:47:54.0418549Z             {
2026-06-21T04:47:54.0418665Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T04:47:54.0418770Z               "line": 326
2026-06-21T04:47:54.0418845Z             },
2026-06-21T04:47:54.0418929Z             {
2026-06-21T04:47:54.0419129Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T04:47:54.0419214Z               "line": 15
2026-06-21T04:47:54.0419295Z             },
2026-06-21T04:47:54.0419381Z             {
2026-06-21T04:47:54.0419495Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T04:47:54.0419585Z               "line": 32
2026-06-21T04:47:54.0419667Z             },
2026-06-21T04:47:54.0419753Z             {
2026-06-21T04:47:54.0419871Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T04:47:54.0419958Z               "line": 49
2026-06-21T04:47:54.0420039Z             },
2026-06-21T04:47:54.0420120Z             {
2026-06-21T04:47:54.0420239Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T04:47:54.0420335Z               "line": 286
2026-06-21T04:47:54.0420415Z             },
2026-06-21T04:47:54.0420506Z             {
2026-06-21T04:47:54.0420612Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T04:47:54.0420707Z               "line": 320
2026-06-21T04:47:54.0420778Z             }
2026-06-21T04:47:54.0420854Z           ]
2026-06-21T04:47:54.0420932Z         },
2026-06-21T04:47:54.0421021Z         "int": {
2026-06-21T04:47:54.0421112Z           "complete": true,
2026-06-21T04:47:54.0421198Z           "evidence": [
2026-06-21T04:47:54.0421289Z             {
2026-06-21T04:47:54.0421441Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T04:47:54.0421527Z               "line": 19
2026-06-21T04:47:54.0421608Z             }
2026-06-21T04:47:54.0421698Z           ]
2026-06-21T04:47:54.0421783Z         },
2026-06-21T04:47:54.0421868Z         "unit": {
2026-06-21T04:47:54.0421965Z           "complete": true,
2026-06-21T04:47:54.0422055Z           "evidence": [
2026-06-21T04:47:54.0422140Z             {
2026-06-21T04:47:54.0422261Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T04:47:54.0422356Z               "line": 455
2026-06-21T04:47:54.0422440Z             },
2026-06-21T04:47:54.0422523Z             {
2026-06-21T04:47:54.0422641Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T04:47:54.0422731Z               "line": 568
2026-06-21T04:47:54.0422817Z             },
2026-06-21T04:47:54.0422899Z             {
2026-06-21T04:47:54.0423009Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T04:47:54.0423094Z               "line": 58
2026-06-21T04:47:54.0423181Z             },
2026-06-21T04:47:54.0423257Z             {
2026-06-21T04:47:54.0423384Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T04:47:54.0423477Z               "line": 77
2026-06-21T04:47:54.0423562Z             },
2026-06-21T04:47:54.0423646Z             {
2026-06-21T04:47:54.0423762Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T04:47:54.0423849Z               "line": 87
2026-06-21T04:47:54.0423938Z             },
2026-06-21T04:47:54.0424114Z             {
2026-06-21T04:47:54.0424232Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T04:47:54.0424326Z               "line": 94
2026-06-21T04:47:54.0424406Z             },
2026-06-21T04:47:54.0424488Z             {
2026-06-21T04:47:54.0424603Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T04:47:54.0424688Z               "line": 691
2026-06-21T04:47:54.0424774Z             },
2026-06-21T04:47:54.0424855Z             {
2026-06-21T04:47:54.0424983Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T04:47:54.0425070Z               "line": 716
2026-06-21T04:47:54.0425256Z             }
2026-06-21T04:47:54.0425336Z           ]
2026-06-21T04:47:54.0425418Z         }
2026-06-21T04:47:54.0425499Z       }
2026-06-21T04:47:54.0425580Z     },
2026-06-21T04:47:54.0425661Z     {
2026-06-21T04:47:54.0425752Z       "id": "REQ-UPD-1",
2026-06-21T04:47:54.0425881Z       "title": "Peer-propagated update over P2P",
2026-06-21T04:47:54.0425980Z       "requiredStages": [
2026-06-21T04:47:54.0426072Z         "impl",
2026-06-21T04:47:54.0426152Z         "unit",
2026-06-21T04:47:54.0426238Z         "int"
2026-06-21T04:47:54.0426324Z       ],
2026-06-21T04:47:54.0426401Z       "stages": {
2026-06-21T04:47:54.0426495Z         "doc": {
2026-06-21T04:47:54.0426586Z           "complete": false,
2026-06-21T04:47:54.0426673Z           "evidence": []
2026-06-21T04:47:54.0426763Z         },
2026-06-21T04:47:54.0426847Z         "impl": {
2026-06-21T04:47:54.0426937Z           "complete": true,
2026-06-21T04:47:54.0427028Z           "evidence": [
2026-06-21T04:47:54.0427122Z             {
2026-06-21T04:47:54.0427254Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T04:47:54.0427355Z               "line": 28
2026-06-21T04:47:54.0427447Z             },
2026-06-21T04:47:54.0427531Z             {
2026-06-21T04:47:54.0427661Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T04:47:54.0427746Z               "line": 103
2026-06-21T04:47:54.0427831Z             },
2026-06-21T04:47:54.0427912Z             {
2026-06-21T04:47:54.0428028Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T04:47:54.0428114Z               "line": 342
2026-06-21T04:47:54.0428199Z             },
2026-06-21T04:47:54.0428285Z             {
2026-06-21T04:47:54.0428409Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T04:47:54.0428504Z               "line": 22
2026-06-21T04:47:54.0428591Z             },
2026-06-21T04:47:54.0428672Z             {
2026-06-21T04:47:54.0428790Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T04:47:54.0428886Z               "line": 207
2026-06-21T04:47:54.0429057Z             },
2026-06-21T04:47:54.0429138Z             {
2026-06-21T04:47:54.0429259Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T04:47:54.0429353Z               "line": 283
2026-06-21T04:47:54.0429428Z             },
2026-06-21T04:47:54.0429513Z             {
2026-06-21T04:47:54.0429637Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T04:47:54.0429726Z               "line": 340
2026-06-21T04:47:54.0429811Z             },
2026-06-21T04:47:54.0429898Z             {
2026-06-21T04:47:54.0430022Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T04:47:54.0430103Z               "line": 37
2026-06-21T04:47:54.0430189Z             }
2026-06-21T04:47:54.0430270Z           ]
2026-06-21T04:47:54.0430356Z         },
2026-06-21T04:47:54.0430436Z         "int": {
2026-06-21T04:47:54.0430533Z           "complete": true,
2026-06-21T04:47:54.0430628Z           "evidence": [
2026-06-21T04:47:54.0430699Z             {
2026-06-21T04:47:54.0430838Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T04:47:54.0430923Z               "line": 207
2026-06-21T04:47:54.0431009Z             },
2026-06-21T04:47:54.0431089Z             {
2026-06-21T04:47:54.0431219Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T04:47:54.0431428Z               "line": 1082
2026-06-21T04:47:54.0431511Z             }
2026-06-21T04:47:54.0431595Z           ]
2026-06-21T04:47:54.0431677Z         },
2026-06-21T04:47:54.0431763Z         "unit": {
2026-06-21T04:47:54.0431859Z           "complete": true,
2026-06-21T04:47:54.0431948Z           "evidence": [
2026-06-21T04:47:54.0432030Z             {
2026-06-21T04:47:54.0432155Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T04:47:54.0432239Z               "line": 490
2026-06-21T04:47:54.0432324Z             },
2026-06-21T04:47:54.0432410Z             {
2026-06-21T04:47:54.0432525Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T04:47:54.0432720Z               "line": 616
2026-06-21T04:47:54.0432806Z             },
2026-06-21T04:47:54.0432887Z             {
2026-06-21T04:47:54.0433019Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T04:47:54.0433102Z               "line": 277
2026-06-21T04:47:54.0433188Z             },
2026-06-21T04:47:54.0433277Z             {
2026-06-21T04:47:54.0433397Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T04:47:54.0433483Z               "line": 124
2026-06-21T04:47:54.0433569Z             },
2026-06-21T04:47:54.0433654Z             {
2026-06-21T04:47:54.0433774Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T04:47:54.0433869Z               "line": 200
2026-06-21T04:47:54.0433959Z             }
2026-06-21T04:47:54.0434047Z           ]
2026-06-21T04:47:54.0434137Z         }
2026-06-21T04:47:54.0434221Z       }
2026-06-21T04:47:54.0434308Z     },
2026-06-21T04:47:54.0434385Z     {
2026-06-21T04:47:54.0434488Z       "id": "REQ-UPD-2",
2026-06-21T04:47:54.0434640Z       "title": "All binaries signature-verified before handoff",
2026-06-21T04:47:54.0434740Z       "requiredStages": [
2026-06-21T04:47:54.0434829Z         "impl",
2026-06-21T04:47:54.0434914Z         "unit"
2026-06-21T04:47:54.0434996Z       ],
2026-06-21T04:47:54.0435082Z       "stages": {
2026-06-21T04:47:54.0435191Z         "doc": {
2026-06-21T04:47:54.0435281Z           "complete": false,
2026-06-21T04:47:54.0435373Z           "evidence": []
2026-06-21T04:47:54.0435459Z         },
2026-06-21T04:47:54.0435538Z         "impl": {
2026-06-21T04:47:54.0435635Z           "complete": true,
2026-06-21T04:47:54.0435717Z           "evidence": [
2026-06-21T04:47:54.0435806Z             {
2026-06-21T04:47:54.0435935Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T04:47:54.0436031Z               "line": 343
2026-06-21T04:47:54.0436102Z             },
2026-06-21T04:47:54.0436187Z             {
2026-06-21T04:47:54.0436317Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T04:47:54.0436411Z               "line": 476
2026-06-21T04:47:54.0436502Z             },
2026-06-21T04:47:54.0436584Z             {
2026-06-21T04:47:54.0436708Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:54.0436803Z               "line": 29
2026-06-21T04:47:54.0436894Z             },
2026-06-21T04:47:54.0436980Z             {
2026-06-21T04:47:54.0437093Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:54.0437180Z               "line": 271
2026-06-21T04:47:54.0437262Z             },
2026-06-21T04:47:54.0437347Z             {
2026-06-21T04:47:54.0437460Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:54.0437550Z               "line": 288
2026-06-21T04:47:54.0437645Z             },
2026-06-21T04:47:54.0437724Z             {
2026-06-21T04:47:54.0437848Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:54.0437945Z               "line": 408
2026-06-21T04:47:54.0438021Z             },
2026-06-21T04:47:54.0438105Z             {
2026-06-21T04:47:54.0438226Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:54.0438306Z               "line": 558
2026-06-21T04:47:54.0438387Z             },
2026-06-21T04:47:54.0438468Z             {
2026-06-21T04:47:54.0438593Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T04:47:54.0438778Z               "line": 155
2026-06-21T04:47:54.0438860Z             }
2026-06-21T04:47:54.0439012Z           ]
2026-06-21T04:47:54.0439093Z         },
2026-06-21T04:47:54.0439175Z         "int": {
2026-06-21T04:47:54.0439278Z           "complete": false,
2026-06-21T04:47:54.0439374Z           "evidence": []
2026-06-21T04:47:54.0439451Z         },
2026-06-21T04:47:54.0439547Z         "unit": {
2026-06-21T04:47:54.0439636Z           "complete": true,
2026-06-21T04:47:54.0439718Z           "evidence": [
2026-06-21T04:47:54.0439800Z             {
2026-06-21T04:47:54.0439918Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:54.0440117Z               "line": 750
2026-06-21T04:47:54.0440203Z             },
2026-06-21T04:47:54.0440286Z             {
2026-06-21T04:47:54.0440395Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:54.0440487Z               "line": 811
2026-06-21T04:47:54.0440568Z             },
2026-06-21T04:47:54.0440653Z             {
2026-06-21T04:47:54.0440768Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:54.0440850Z               "line": 825
2026-06-21T04:47:54.0440939Z             },
2026-06-21T04:47:54.0441020Z             {
2026-06-21T04:47:54.0441140Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:54.0441222Z               "line": 841
2026-06-21T04:47:54.0441311Z             },
2026-06-21T04:47:54.0441388Z             {
2026-06-21T04:47:54.0441498Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:54.0441583Z               "line": 932
2026-06-21T04:47:54.0441669Z             },
2026-06-21T04:47:54.0441766Z             {
2026-06-21T04:47:54.0441875Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T04:47:54.0441965Z               "line": 414
2026-06-21T04:47:54.0442052Z             },
2026-06-21T04:47:54.0442136Z             {
2026-06-21T04:47:54.0442260Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T04:47:54.0442347Z               "line": 427
2026-06-21T04:47:54.0442433Z             },
2026-06-21T04:47:54.0442508Z             {
2026-06-21T04:47:54.0442643Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T04:47:54.0442734Z               "line": 410
2026-06-21T04:47:54.0442808Z             }
2026-06-21T04:47:54.0442889Z           ]
2026-06-21T04:47:54.0442965Z         }
2026-06-21T04:47:54.0443056Z       }
2026-06-21T04:47:54.0443128Z     },
2026-06-21T04:47:54.0443218Z     {
2026-06-21T04:47:54.0443313Z       "id": "REQ-UPD-3",
2026-06-21T04:47:54.0443494Z       "title": "No endpoint process terminates/suspends during self-update",
2026-06-21T04:47:54.0443599Z       "requiredStages": [
2026-06-21T04:47:54.0443681Z         "impl",
2026-06-21T04:47:54.0443767Z         "unit",
2026-06-21T04:47:54.0443842Z         "int"
2026-06-21T04:47:54.0443933Z       ],
2026-06-21T04:47:54.0444024Z       "stages": {
2026-06-21T04:47:54.0444109Z         "doc": {
2026-06-21T04:47:54.0444209Z           "complete": false,
2026-06-21T04:47:54.0444292Z           "evidence": []
2026-06-21T04:47:54.0444377Z         },
2026-06-21T04:47:54.0444458Z         "impl": {
2026-06-21T04:47:54.0444553Z           "complete": true,
2026-06-21T04:47:54.0444640Z           "evidence": [
2026-06-21T04:47:54.0444725Z             {
2026-06-21T04:47:54.0444848Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T04:47:54.0444931Z               "line": 40
2026-06-21T04:47:54.0445021Z             },
2026-06-21T04:47:54.0445091Z             {
2026-06-21T04:47:54.0445214Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T04:47:54.0445310Z               "line": 87
2026-06-21T04:47:54.0445423Z             },
2026-06-21T04:47:54.0445527Z             {
2026-06-21T04:47:54.0445633Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T04:47:54.0445718Z               "line": 1042
2026-06-21T04:47:54.0445803Z             },
2026-06-21T04:47:54.0445990Z             {
2026-06-21T04:47:54.0446103Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T04:47:54.0446185Z               "line": 1843
2026-06-21T04:47:54.0446272Z             },
2026-06-21T04:47:54.0446348Z             {
2026-06-21T04:47:54.0446456Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T04:47:54.0446553Z               "line": 26
2026-06-21T04:47:54.0446634Z             },
2026-06-21T04:47:54.0446719Z             {
2026-06-21T04:47:54.0446829Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T04:47:54.0446925Z               "line": 114
2026-06-21T04:47:54.0447010Z             },
2026-06-21T04:47:54.0447183Z             {
2026-06-21T04:47:54.0447305Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T04:47:54.0447396Z               "line": 246
2026-06-21T04:47:54.0447484Z             },
2026-06-21T04:47:54.0447569Z             {
2026-06-21T04:47:54.0447678Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0447764Z               "line": 2442
2026-06-21T04:47:54.0447850Z             }
2026-06-21T04:47:54.0447935Z           ]
2026-06-21T04:47:54.0448010Z         },
2026-06-21T04:47:54.0448101Z         "int": {
2026-06-21T04:47:54.0448187Z           "complete": true,
2026-06-21T04:47:54.0448275Z           "evidence": [
2026-06-21T04:47:54.0448360Z             {
2026-06-21T04:47:54.0448490Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T04:47:54.0448576Z               "line": 58
2026-06-21T04:47:54.0448661Z             }
2026-06-21T04:47:54.0448742Z           ]
2026-06-21T04:47:54.0448829Z         },
2026-06-21T04:47:54.0448910Z         "unit": {
2026-06-21T04:47:54.0449091Z           "complete": true,
2026-06-21T04:47:54.0449186Z           "evidence": [
2026-06-21T04:47:54.0449272Z             {
2026-06-21T04:47:54.0449381Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T04:47:54.0449482Z               "line": 532
2026-06-21T04:47:54.0449558Z             },
2026-06-21T04:47:54.0449648Z             {
2026-06-21T04:47:54.0449759Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T04:47:54.0449862Z               "line": 585
2026-06-21T04:47:54.0449943Z             },
2026-06-21T04:47:54.0450031Z             {
2026-06-21T04:47:54.0450154Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T04:47:54.0450244Z               "line": 653
2026-06-21T04:47:54.0450321Z             },
2026-06-21T04:47:54.0450403Z             {
2026-06-21T04:47:54.0450525Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T04:47:54.0450619Z               "line": 1102
2026-06-21T04:47:54.0450696Z             },
2026-06-21T04:47:54.0450782Z             {
2026-06-21T04:47:54.0450894Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T04:47:54.0450990Z               "line": 271
2026-06-21T04:47:54.0451071Z             },
2026-06-21T04:47:54.0451152Z             {
2026-06-21T04:47:54.0451270Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T04:47:54.0451353Z               "line": 295
2026-06-21T04:47:54.0451438Z             },
2026-06-21T04:47:54.0454164Z             {
2026-06-21T04:47:54.0454322Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T04:47:54.0454412Z               "line": 316
2026-06-21T04:47:54.0454503Z             },
2026-06-21T04:47:54.0454589Z             {
2026-06-21T04:47:54.0454712Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T04:47:54.0454793Z               "line": 332
2026-06-21T04:47:54.0454876Z             }
2026-06-21T04:47:54.0454965Z           ]
2026-06-21T04:47:54.0455041Z         }
2026-06-21T04:47:54.0455123Z       }
2026-06-21T04:47:54.0455214Z     },
2026-06-21T04:47:54.0455294Z     {
2026-06-21T04:47:54.0455394Z       "id": "REQ-UPD-4",
2026-06-21T04:47:54.0455571Z       "title": "Update gated on user confirmation by default; opt-in full-auto",
2026-06-21T04:47:54.0455675Z       "requiredStages": [
2026-06-21T04:47:54.0455751Z         "impl",
2026-06-21T04:47:54.0455963Z         "unit"
2026-06-21T04:47:54.0456048Z       ],
2026-06-21T04:47:54.0456135Z       "stages": {
2026-06-21T04:47:54.0456222Z         "doc": {
2026-06-21T04:47:54.0456307Z           "complete": false,
2026-06-21T04:47:54.0456397Z           "evidence": []
2026-06-21T04:47:54.0456479Z         },
2026-06-21T04:47:54.0456569Z         "impl": {
2026-06-21T04:47:54.0456669Z           "complete": true,
2026-06-21T04:47:54.0456760Z           "evidence": [
2026-06-21T04:47:54.0456846Z             {
2026-06-21T04:47:54.0456974Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T04:47:54.0457065Z               "line": 41
2026-06-21T04:47:54.0457241Z             },
2026-06-21T04:47:54.0457322Z             {
2026-06-21T04:47:54.0457451Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T04:47:54.0457537Z               "line": 88
2026-06-21T04:47:54.0457618Z             },
2026-06-21T04:47:54.0457704Z             {
2026-06-21T04:47:54.0457828Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T04:47:54.0457914Z               "line": 23
2026-06-21T04:47:54.0458005Z             },
2026-06-21T04:47:54.0458091Z             {
2026-06-21T04:47:54.0458195Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T04:47:54.0458280Z               "line": 56
2026-06-21T04:47:54.0458368Z             },
2026-06-21T04:47:54.0458448Z             {
2026-06-21T04:47:54.0458556Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T04:47:54.0458642Z               "line": 77
2026-06-21T04:47:54.0458723Z             },
2026-06-21T04:47:54.0458807Z             {
2026-06-21T04:47:54.0458930Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T04:47:54.0459117Z               "line": 236
2026-06-21T04:47:54.0459211Z             },
2026-06-21T04:47:54.0459297Z             {
2026-06-21T04:47:54.0459404Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T04:47:54.0459489Z               "line": 108
2026-06-21T04:47:54.0459574Z             },
2026-06-21T04:47:54.0459656Z             {
2026-06-21T04:47:54.0459760Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T04:47:54.0459851Z               "line": 270
2026-06-21T04:47:54.0459936Z             },
2026-06-21T04:47:54.0460018Z             {
2026-06-21T04:47:54.0460128Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0460208Z               "line": 2441
2026-06-21T04:47:54.0460291Z             }
2026-06-21T04:47:54.0460376Z           ]
2026-06-21T04:47:54.0460456Z         },
2026-06-21T04:47:54.0460537Z         "int": {
2026-06-21T04:47:54.0460629Z           "complete": false,
2026-06-21T04:47:54.0460728Z           "evidence": []
2026-06-21T04:47:54.0460805Z         },
2026-06-21T04:47:54.0460891Z         "unit": {
2026-06-21T04:47:54.0460987Z           "complete": true,
2026-06-21T04:47:54.0461076Z           "evidence": [
2026-06-21T04:47:54.0461156Z             {
2026-06-21T04:47:54.0461280Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T04:47:54.0461370Z               "line": 581
2026-06-21T04:47:54.0461459Z             },
2026-06-21T04:47:54.0461545Z             {
2026-06-21T04:47:54.0461665Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T04:47:54.0461754Z               "line": 706
2026-06-21T04:47:54.0461840Z             },
2026-06-21T04:47:54.0461923Z             {
2026-06-21T04:47:54.0462032Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T04:47:54.0462121Z               "line": 384
2026-06-21T04:47:54.0462204Z             },
2026-06-21T04:47:54.0462280Z             {
2026-06-21T04:47:54.0462393Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T04:47:54.0462484Z               "line": 102
2026-06-21T04:47:54.0462566Z             },
2026-06-21T04:47:54.0462656Z             {
2026-06-21T04:47:54.0462765Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T04:47:54.0462852Z               "line": 123
2026-06-21T04:47:54.0462933Z             },
2026-06-21T04:47:54.0463123Z             {
2026-06-21T04:47:54.0463243Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T04:47:54.0463328Z               "line": 142
2026-06-21T04:47:54.0463414Z             },
2026-06-21T04:47:54.0463496Z             {
2026-06-21T04:47:54.0463614Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T04:47:54.0463700Z               "line": 582
2026-06-21T04:47:54.0463788Z             },
2026-06-21T04:47:54.0463878Z             {
2026-06-21T04:47:54.0463985Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T04:47:54.0464075Z               "line": 566
2026-06-21T04:47:54.0464152Z             },
2026-06-21T04:47:54.0464352Z             {
2026-06-21T04:47:54.0464453Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0464548Z               "line": 8256
2026-06-21T04:47:54.0464628Z             }
2026-06-21T04:47:54.0464705Z           ]
2026-06-21T04:47:54.0464787Z         }
2026-06-21T04:47:54.0464872Z       }
2026-06-21T04:47:54.0464962Z     },
2026-06-21T04:47:54.0465044Z     {
2026-06-21T04:47:54.0465135Z       "id": "REQ-UPD-5",
2026-06-21T04:47:54.0465282Z       "title": "spt-core ripple-updates registered adapters",
2026-06-21T04:47:54.0465373Z       "requiredStages": [
2026-06-21T04:47:54.0465455Z         "impl",
2026-06-21T04:47:54.0465540Z         "unit"
2026-06-21T04:47:54.0465625Z       ],
2026-06-21T04:47:54.0465707Z       "stages": {
2026-06-21T04:47:54.0465798Z         "doc": {
2026-06-21T04:47:54.0465897Z           "complete": false,
2026-06-21T04:47:54.0465988Z           "evidence": []
2026-06-21T04:47:54.0466085Z         },
2026-06-21T04:47:54.0466173Z         "impl": {
2026-06-21T04:47:54.0466273Z           "complete": true,
2026-06-21T04:47:54.0466363Z           "evidence": [
2026-06-21T04:47:54.0466453Z             {
2026-06-21T04:47:54.0466581Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T04:47:54.0466662Z               "line": 27
2026-06-21T04:47:54.0466748Z             },
2026-06-21T04:47:54.0466820Z             {
2026-06-21T04:47:54.0466947Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T04:47:54.0467034Z               "line": 87
2026-06-21T04:47:54.0467125Z             },
2026-06-21T04:47:54.0467210Z             {
2026-06-21T04:47:54.0467340Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T04:47:54.0467435Z               "line": 145
2026-06-21T04:47:54.0467510Z             },
2026-06-21T04:47:54.0467596Z             {
2026-06-21T04:47:54.0467716Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:54.0467806Z               "line": 492
2026-06-21T04:47:54.0467896Z             },
2026-06-21T04:47:54.0467974Z             {
2026-06-21T04:47:54.0468092Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:54.0468178Z               "line": 546
2026-06-21T04:47:54.0468264Z             }
2026-06-21T04:47:54.0468350Z           ]
2026-06-21T04:47:54.0468426Z         },
2026-06-21T04:47:54.0468512Z         "int": {
2026-06-21T04:47:54.0468604Z           "complete": false,
2026-06-21T04:47:54.0468684Z           "evidence": []
2026-06-21T04:47:54.0468769Z         },
2026-06-21T04:47:54.0468855Z         "unit": {
2026-06-21T04:47:54.0469008Z           "complete": true,
2026-06-21T04:47:54.0469084Z           "evidence": [
2026-06-21T04:47:54.0469168Z             {
2026-06-21T04:47:54.0469293Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T04:47:54.0469395Z               "line": 272
2026-06-21T04:47:54.0469480Z             },
2026-06-21T04:47:54.0469567Z             {
2026-06-21T04:47:54.0469692Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T04:47:54.0469786Z               "line": 286
2026-06-21T04:47:54.0469867Z             },
2026-06-21T04:47:54.0469949Z             {
2026-06-21T04:47:54.0470077Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T04:47:54.0470163Z               "line": 300
2026-06-21T04:47:54.0470345Z             },
2026-06-21T04:47:54.0470434Z             {
2026-06-21T04:47:54.0470559Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T04:47:54.0470650Z               "line": 314
2026-06-21T04:47:54.0470731Z             },
2026-06-21T04:47:54.0470807Z             {
2026-06-21T04:47:54.0470936Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T04:47:54.0471016Z               "line": 348
2026-06-21T04:47:54.0471102Z             },
2026-06-21T04:47:54.0471185Z             {
2026-06-21T04:47:54.0471302Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:54.0471384Z               "line": 1071
2026-06-21T04:47:54.0471571Z             }
2026-06-21T04:47:54.0471655Z           ]
2026-06-21T04:47:54.0471740Z         }
2026-06-21T04:47:54.0471821Z       }
2026-06-21T04:47:54.0471902Z     },
2026-06-21T04:47:54.0471991Z     {
2026-06-21T04:47:54.0472071Z       "id": "REQ-UPD-6",
2026-06-21T04:47:54.0472882Z       "title": "Platform-targeted update sets and debug rollout: signed multi-platform update metadata, recipient platform selection, channel-scoped monotonic counters, debug-channel opt-in via release-key overlay, local staging plus pull-based peer propagation, and maintainer-only convergence tooling (ADR-0016)",
2026-06-21T04:47:54.0472991Z       "requiredStages": [
2026-06-21T04:47:54.0473064Z         "doc",
2026-06-21T04:47:54.0473150Z         "impl",
2026-06-21T04:47:54.0473230Z         "unit",
2026-06-21T04:47:54.0473316Z         "int"
2026-06-21T04:47:54.0473403Z       ],
2026-06-21T04:47:54.0473484Z       "stages": {
2026-06-21T04:47:54.0473565Z         "doc": {
2026-06-21T04:47:54.0473650Z           "complete": true,
2026-06-21T04:47:54.0473741Z           "evidence": [
2026-06-21T04:47:54.0473822Z             {
2026-06-21T04:47:54.0473955Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T04:47:54.0474042Z               "line": 3
2026-06-21T04:47:54.0474128Z             },
2026-06-21T04:47:54.0474212Z             {
2026-06-21T04:47:54.0474323Z               "path": "docs/DEBUG-ROLLOUT.md",
2026-06-21T04:47:54.0474414Z               "line": 3
2026-06-21T04:47:54.0474494Z             },
2026-06-21T04:47:54.0474569Z             {
2026-06-21T04:47:54.0474722Z               "path": "docs/adr/0016-platform-targeted-update-sets.md",
2026-06-21T04:47:54.0474809Z               "line": 3
2026-06-21T04:47:54.0474888Z             }
2026-06-21T04:47:54.0474974Z           ]
2026-06-21T04:47:54.0475057Z         },
2026-06-21T04:47:54.0475142Z         "impl": {
2026-06-21T04:47:54.0475241Z           "complete": true,
2026-06-21T04:47:54.0475328Z           "evidence": [
2026-06-21T04:47:54.0475409Z             {
2026-06-21T04:47:54.0475537Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T04:47:54.0475623Z               "line": 76
2026-06-21T04:47:54.0475710Z             },
2026-06-21T04:47:54.0475795Z             {
2026-06-21T04:47:54.0475918Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T04:47:54.0476011Z               "line": 212
2026-06-21T04:47:54.0476095Z             },
2026-06-21T04:47:54.0476185Z             {
2026-06-21T04:47:54.0476306Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T04:47:54.0476391Z               "line": 69
2026-06-21T04:47:54.0476476Z             },
2026-06-21T04:47:54.0476567Z             {
2026-06-21T04:47:54.0476683Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T04:47:54.0476776Z               "line": 133
2026-06-21T04:47:54.0476866Z             },
2026-06-21T04:47:54.0476952Z             {
2026-06-21T04:47:54.0477074Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T04:47:54.0477169Z               "line": 243
2026-06-21T04:47:54.0477255Z             },
2026-06-21T04:47:54.0477332Z             {
2026-06-21T04:47:54.0477446Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T04:47:54.0477527Z               "line": 406
2026-06-21T04:47:54.0477614Z             },
2026-06-21T04:47:54.0477760Z             {
2026-06-21T04:47:54.0477880Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T04:47:54.0477975Z               "line": 534
2026-06-21T04:47:54.0478056Z             },
2026-06-21T04:47:54.0478146Z             {
2026-06-21T04:47:54.0478267Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T04:47:54.0478352Z               "line": 548
2026-06-21T04:47:54.0478433Z             },
2026-06-21T04:47:54.0478514Z             {
2026-06-21T04:47:54.0478628Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T04:47:54.0478719Z               "line": 603
2026-06-21T04:47:54.0478878Z             },
2026-06-21T04:47:54.0479062Z             {
2026-06-21T04:47:54.0479188Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T04:47:54.0479272Z               "line": 634
2026-06-21T04:47:54.0479358Z             },
2026-06-21T04:47:54.0479445Z             {
2026-06-21T04:47:54.0479568Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T04:47:54.0479658Z               "line": 137
2026-06-21T04:47:54.0479738Z             },
2026-06-21T04:47:54.0479820Z             {
2026-06-21T04:47:54.0479946Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T04:47:54.0480022Z               "line": 184
2026-06-21T04:47:54.0480108Z             },
2026-06-21T04:47:54.0480195Z             {
2026-06-21T04:47:54.0480313Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T04:47:54.0480394Z               "line": 78
2026-06-21T04:47:54.0480481Z             },
2026-06-21T04:47:54.0480562Z             {
2026-06-21T04:47:54.0480671Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T04:47:54.0480772Z               "line": 114
2026-06-21T04:47:54.0480852Z             },
2026-06-21T04:47:54.0480928Z             {
2026-06-21T04:47:54.0481043Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T04:47:54.0481124Z               "line": 185
2026-06-21T04:47:54.0481205Z             },
2026-06-21T04:47:54.0481276Z             {
2026-06-21T04:47:54.0481391Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T04:47:54.0481482Z               "line": 260
2026-06-21T04:47:54.0481562Z             },
2026-06-21T04:47:54.0481653Z             {
2026-06-21T04:47:54.0481768Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T04:47:54.0481853Z               "line": 292
2026-06-21T04:47:54.0481939Z             },
2026-06-21T04:47:54.0482021Z             {
2026-06-21T04:47:54.0482145Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T04:47:54.0482234Z               "line": 323
2026-06-21T04:47:54.0482319Z             },
2026-06-21T04:47:54.0482405Z             {
2026-06-21T04:47:54.0482527Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T04:47:54.0482603Z               "line": 346
2026-06-21T04:47:54.0482684Z             },
2026-06-21T04:47:54.0482771Z             {
2026-06-21T04:47:54.0482889Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T04:47:54.0482975Z               "line": 388
2026-06-21T04:47:54.0483057Z             },
2026-06-21T04:47:54.0483138Z             {
2026-06-21T04:47:54.0483256Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T04:47:54.0483338Z               "line": 398
2026-06-21T04:47:54.0483424Z             },
2026-06-21T04:47:54.0483505Z             {
2026-06-21T04:47:54.0483614Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T04:47:54.0483696Z               "line": 410
2026-06-21T04:47:54.0483776Z             },
2026-06-21T04:47:54.0483862Z             {
2026-06-21T04:47:54.0483982Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T04:47:54.0484077Z               "line": 420
2026-06-21T04:47:54.0484153Z             },
2026-06-21T04:47:54.0484239Z             {
2026-06-21T04:47:54.0484354Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T04:47:54.0484434Z               "line": 439
2026-06-21T04:47:54.0484621Z             },
2026-06-21T04:47:54.0484702Z             {
2026-06-21T04:47:54.0484821Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T04:47:54.0484908Z               "line": 449
2026-06-21T04:47:54.0484993Z             },
2026-06-21T04:47:54.0485077Z             {
2026-06-21T04:47:54.0485200Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:54.0485287Z               "line": 94
2026-06-21T04:47:54.0485369Z             },
2026-06-21T04:47:54.0485458Z             {
2026-06-21T04:47:54.0485569Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:54.0485650Z               "line": 120
2026-06-21T04:47:54.0485816Z             },
2026-06-21T04:47:54.0485898Z             {
2026-06-21T04:47:54.0486022Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:54.0486116Z               "line": 135
2026-06-21T04:47:54.0486203Z             },
2026-06-21T04:47:54.0486289Z             {
2026-06-21T04:47:54.0486412Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:54.0486498Z               "line": 162
2026-06-21T04:47:54.0486575Z             },
2026-06-21T04:47:54.0486664Z             {
2026-06-21T04:47:54.0486769Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:54.0486866Z               "line": 174
2026-06-21T04:47:54.0486947Z             },
2026-06-21T04:47:54.0487027Z             {
2026-06-21T04:47:54.0487152Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:54.0487238Z               "line": 185
2026-06-21T04:47:54.0487327Z             },
2026-06-21T04:47:54.0487407Z             {
2026-06-21T04:47:54.0487536Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:54.0487621Z               "line": 451
2026-06-21T04:47:54.0487701Z             },
2026-06-21T04:47:54.0487782Z             {
2026-06-21T04:47:54.0487892Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:54.0487987Z               "line": 573
2026-06-21T04:47:54.0488067Z             },
2026-06-21T04:47:54.0488140Z             {
2026-06-21T04:47:54.0488245Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T04:47:54.0488339Z               "line": 171
2026-06-21T04:47:54.0488421Z             },
2026-06-21T04:47:54.0488503Z             {
2026-06-21T04:47:54.0488626Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T04:47:54.0488702Z               "line": 65
2026-06-21T04:47:54.0488784Z             },
2026-06-21T04:47:54.0488864Z             {
2026-06-21T04:47:54.0489075Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T04:47:54.0489184Z               "line": 71
2026-06-21T04:47:54.0489265Z             },
2026-06-21T04:47:54.0489351Z             {
2026-06-21T04:47:54.0489466Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T04:47:54.0489550Z               "line": 77
2026-06-21T04:47:54.0489637Z             },
2026-06-21T04:47:54.0489719Z             {
2026-06-21T04:47:54.0489828Z               "path": "crates/xtask/src/main.rs",
2026-06-21T04:47:54.0489909Z               "line": 778
2026-06-21T04:47:54.0489995Z             },
2026-06-21T04:47:54.0490082Z             {
2026-06-21T04:47:54.0490194Z               "path": "crates/xtask/src/main.rs",
2026-06-21T04:47:54.0490270Z               "line": 795
2026-06-21T04:47:54.0490360Z             },
2026-06-21T04:47:54.0490446Z             {
2026-06-21T04:47:54.0490549Z               "path": "crates/xtask/src/main.rs",
2026-06-21T04:47:54.0490639Z               "line": 838
2026-06-21T04:47:54.0490726Z             },
2026-06-21T04:47:54.0490803Z             {
2026-06-21T04:47:54.0490911Z               "path": "crates/xtask/src/main.rs",
2026-06-21T04:47:54.0491002Z               "line": 981
2026-06-21T04:47:54.0491084Z             },
2026-06-21T04:47:54.0491159Z             {
2026-06-21T04:47:54.0491273Z               "path": "crates/xtask/src/main.rs",
2026-06-21T04:47:54.0491365Z               "line": 1131
2026-06-21T04:47:54.0491540Z             }
2026-06-21T04:47:54.0491632Z           ]
2026-06-21T04:47:54.0491718Z         },
2026-06-21T04:47:54.0491803Z         "int": {
2026-06-21T04:47:54.0491908Z           "complete": true,
2026-06-21T04:47:54.0491995Z           "evidence": [
2026-06-21T04:47:54.0492075Z             {
2026-06-21T04:47:54.0492204Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T04:47:54.0492291Z               "line": 569
2026-06-21T04:47:54.0492380Z             },
2026-06-21T04:47:54.0492470Z             {
2026-06-21T04:47:54.0492586Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T04:47:54.0492672Z               "line": 135
2026-06-21T04:47:54.0492870Z             }
2026-06-21T04:47:54.0492956Z           ]
2026-06-21T04:47:54.0493040Z         },
2026-06-21T04:47:54.0493130Z         "unit": {
2026-06-21T04:47:54.0493230Z           "complete": true,
2026-06-21T04:47:54.0493312Z           "evidence": [
2026-06-21T04:47:54.0493402Z             {
2026-06-21T04:47:54.0493535Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T04:47:54.0493627Z               "line": 626
2026-06-21T04:47:54.0493717Z             },
2026-06-21T04:47:54.0493792Z             {
2026-06-21T04:47:54.0493917Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T04:47:54.0494003Z               "line": 675
2026-06-21T04:47:54.0494098Z             },
2026-06-21T04:47:54.0494175Z             {
2026-06-21T04:47:54.0494299Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T04:47:54.0494384Z               "line": 696
2026-06-21T04:47:54.0494465Z             },
2026-06-21T04:47:54.0494543Z             {
2026-06-21T04:47:54.0494665Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T04:47:54.0494751Z               "line": 513
2026-06-21T04:47:54.0494833Z             },
2026-06-21T04:47:54.0494914Z             {
2026-06-21T04:47:54.0495047Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T04:47:54.0495138Z               "line": 638
2026-06-21T04:47:54.0495229Z             },
2026-06-21T04:47:54.0495314Z             {
2026-06-21T04:47:54.0495429Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T04:47:54.0495511Z               "line": 675
2026-06-21T04:47:54.0495600Z             },
2026-06-21T04:47:54.0495684Z             {
2026-06-21T04:47:54.0495794Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:54.0495886Z               "line": 947
2026-06-21T04:47:54.0495966Z             },
2026-06-21T04:47:54.0496051Z             {
2026-06-21T04:47:54.0496167Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:54.0496263Z               "line": 969
2026-06-21T04:47:54.0496352Z             },
2026-06-21T04:47:54.0496439Z             {
2026-06-21T04:47:54.0496553Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:54.0496643Z               "line": 986
2026-06-21T04:47:54.0496734Z             },
2026-06-21T04:47:54.0496825Z             {
2026-06-21T04:47:54.0496944Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:54.0497039Z               "line": 1001
2026-06-21T04:47:54.0497121Z             },
2026-06-21T04:47:54.0497206Z             {
2026-06-21T04:47:54.0497315Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:54.0497408Z               "line": 1027
2026-06-21T04:47:54.0497488Z             },
2026-06-21T04:47:54.0497577Z             {
2026-06-21T04:47:54.0497697Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T04:47:54.0497779Z               "line": 457
2026-06-21T04:47:54.0497873Z             },
2026-06-21T04:47:54.0497963Z             {
2026-06-21T04:47:54.0498087Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T04:47:54.0498176Z               "line": 338
2026-06-21T04:47:54.0498266Z             },
2026-06-21T04:47:54.0498352Z             {
2026-06-21T04:47:54.0498457Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0498637Z               "line": 10549
2026-06-21T04:47:54.0498724Z             },
2026-06-21T04:47:54.0498805Z             {
2026-06-21T04:47:54.0498919Z               "path": "crates/xtask/src/main.rs",
2026-06-21T04:47:54.0499091Z               "line": 1260
2026-06-21T04:47:54.0499172Z             },
2026-06-21T04:47:54.0499257Z             {
2026-06-21T04:47:54.0499378Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T04:47:54.0499458Z               "line": 130
2026-06-21T04:47:54.0499548Z             }
2026-06-21T04:47:54.0499635Z           ]
2026-06-21T04:47:54.0499707Z         }
2026-06-21T04:47:54.0499797Z       }
2026-06-21T04:47:54.0499877Z     },
2026-06-21T04:47:54.0500059Z     {
2026-06-21T04:47:54.0500154Z       "id": "REQ-UPD-7",
2026-06-21T04:47:54.0502301Z       "title": "Origin-source update bootstrap (`spt update fetch`): pull the latest signed release directly from the GitHub release origin (`SaberMage/spt-releases`) — the per-platform artifact + its `<asset>.release.json` SignedRelease metadata — and stage it through the EXISTING verify→stage pipeline (the same `plan_verified` gate: two-key signature + channel + monotonic rollback floor + SHA-256), after which the normal consent-notif / `spt update apply` flow is unchanged. Closes the peer-only-discovery gap (REQ-UPD-1): a first-in-fleet / isolated node can update with no peer to pull from. The signed-release anchor keeps the GitHub transport untrusted-but-verified.",
2026-06-21T04:47:54.0502411Z       "requiredStages": [
2026-06-21T04:47:54.0502497Z         "impl",
2026-06-21T04:47:54.0502588Z         "unit"
2026-06-21T04:47:54.0502668Z       ],
2026-06-21T04:47:54.0502754Z       "stages": {
2026-06-21T04:47:54.0502851Z         "doc": {
2026-06-21T04:47:54.0502945Z           "complete": false,
2026-06-21T04:47:54.0503031Z           "evidence": []
2026-06-21T04:47:54.0503117Z         },
2026-06-21T04:47:54.0503209Z         "impl": {
2026-06-21T04:47:54.0503302Z           "complete": true,
2026-06-21T04:47:54.0503392Z           "evidence": [
2026-06-21T04:47:54.0503473Z             {
2026-06-21T04:47:54.0503577Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0503676Z               "line": 2626
2026-06-21T04:47:54.0503756Z             }
2026-06-21T04:47:54.0503843Z           ]
2026-06-21T04:47:54.0503925Z         },
2026-06-21T04:47:54.0504005Z         "int": {
2026-06-21T04:47:54.0504100Z           "complete": false,
2026-06-21T04:47:54.0504182Z           "evidence": []
2026-06-21T04:47:54.0504272Z         },
2026-06-21T04:47:54.0504358Z         "unit": {
2026-06-21T04:47:54.0504454Z           "complete": true,
2026-06-21T04:47:54.0504539Z           "evidence": [
2026-06-21T04:47:54.0504629Z             {
2026-06-21T04:47:54.0504740Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0504830Z               "line": 10525
2026-06-21T04:47:54.0504911Z             }
2026-06-21T04:47:54.0505001Z           ]
2026-06-21T04:47:54.0505088Z         }
2026-06-21T04:47:54.0505173Z       }
2026-06-21T04:47:54.0505264Z     },
2026-06-21T04:47:54.0505349Z     {
2026-06-21T04:47:54.0505437Z       "id": "REQ-UPD-8",
2026-06-21T04:47:54.0507929Z       "title": "Platform-safe `spt update fetch` + apply platform-guard (v0.3.1 cross-OS brick fix): `spt update fetch` stages the signed multi-platform `SignedUpdateSet` (`update-set.json` + every platform artifact it names), never a platform-blind single `SignedRelease`, so local apply selects `current_platform()` and P2P re-serve lets each peer select ITS own platform. Defense-in-depth: `apply_staged` REFUSES a staged single-release artifact unless it is platform-stamped for THIS node (an unstamped pre-v0.3.2 single, or a single stamped for another OS, fail-safe refuses — the guard that alone prevents the v0.3.1 brick where a Linux ELF was applied as `spt.exe`). UX: a friendly post-apply message (`Updated spt-core to vX.Y.Z.` + changelog URL) driven by an additive `product_version` metadata field, with a release-counter fallback when absent.",
2026-06-21T04:47:54.0508157Z       "requiredStages": [
2026-06-21T04:47:54.0508238Z         "impl",
2026-06-21T04:47:54.0508325Z         "unit"
2026-06-21T04:47:54.0508400Z       ],
2026-06-21T04:47:54.0508485Z       "stages": {
2026-06-21T04:47:54.0508566Z         "doc": {
2026-06-21T04:47:54.0508661Z           "complete": false,
2026-06-21T04:47:54.0508764Z           "evidence": []
2026-06-21T04:47:54.0508849Z         },
2026-06-21T04:47:54.0508931Z         "impl": {
2026-06-21T04:47:54.0509107Z           "complete": true,
2026-06-21T04:47:54.0509193Z           "evidence": [
2026-06-21T04:47:54.0509279Z             {
2026-06-21T04:47:54.0509403Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T04:47:54.0509594Z               "line": 77
2026-06-21T04:47:54.0509675Z             },
2026-06-21T04:47:54.0509761Z             {
2026-06-21T04:47:54.0509886Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T04:47:54.0509976Z               "line": 49
2026-06-21T04:47:54.0510066Z             },
2026-06-21T04:47:54.0510152Z             {
2026-06-21T04:47:54.0510272Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T04:47:54.0510357Z               "line": 152
2026-06-21T04:47:54.0510442Z             },
2026-06-21T04:47:54.0510525Z             {
2026-06-21T04:47:54.0510648Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T04:47:54.0510738Z               "line": 215
2026-06-21T04:47:54.0510815Z             },
2026-06-21T04:47:54.0510896Z             {
2026-06-21T04:47:54.0511009Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T04:47:54.0511096Z               "line": 230
2026-06-21T04:47:54.0511169Z             },
2026-06-21T04:47:54.0511259Z             {
2026-06-21T04:47:54.0511386Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T04:47:54.0511467Z               "line": 247
2026-06-21T04:47:54.0511552Z             },
2026-06-21T04:47:54.0511641Z             {
2026-06-21T04:47:54.0511759Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T04:47:54.0511856Z               "line": 269
2026-06-21T04:47:54.0511937Z             },
2026-06-21T04:47:54.0512017Z             {
2026-06-21T04:47:54.0512137Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:54.0512218Z               "line": 66
2026-06-21T04:47:54.0512303Z             },
2026-06-21T04:47:54.0512389Z             {
2026-06-21T04:47:54.0512500Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:54.0512586Z               "line": 154
2026-06-21T04:47:54.0512670Z             },
2026-06-21T04:47:54.0512757Z             {
2026-06-21T04:47:54.0512871Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0512961Z               "line": 2430
2026-06-21T04:47:54.0513047Z             },
2026-06-21T04:47:54.0513134Z             {
2026-06-21T04:47:54.0513242Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0513324Z               "line": 2493
2026-06-21T04:47:54.0513396Z             },
2026-06-21T04:47:54.0513487Z             {
2026-06-21T04:47:54.0513591Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0513677Z               "line": 2503
2026-06-21T04:47:54.0513769Z             },
2026-06-21T04:47:54.0513853Z             {
2026-06-21T04:47:54.0513962Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0514043Z               "line": 2510
2026-06-21T04:47:54.0514128Z             },
2026-06-21T04:47:54.0514207Z             {
2026-06-21T04:47:54.0514311Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0514398Z               "line": 2627
2026-06-21T04:47:54.0514480Z             },
2026-06-21T04:47:54.0514569Z             {
2026-06-21T04:47:54.0514675Z               "path": "crates/xtask/src/main.rs",
2026-06-21T04:47:54.0514761Z               "line": 480
2026-06-21T04:47:54.0514846Z             },
2026-06-21T04:47:54.0514927Z             {
2026-06-21T04:47:54.0515038Z               "path": "crates/xtask/src/main.rs",
2026-06-21T04:47:54.0515123Z               "line": 494
2026-06-21T04:47:54.0515314Z             }
2026-06-21T04:47:54.0515390Z           ]
2026-06-21T04:47:54.0515471Z         },
2026-06-21T04:47:54.0515557Z         "int": {
2026-06-21T04:47:54.0515658Z           "complete": false,
2026-06-21T04:47:54.0515748Z           "evidence": []
2026-06-21T04:47:54.0515829Z         },
2026-06-21T04:47:54.0515919Z         "unit": {
2026-06-21T04:47:54.0516016Z           "complete": true,
2026-06-21T04:47:54.0516105Z           "evidence": [
2026-06-21T04:47:54.0516186Z             {
2026-06-21T04:47:54.0516321Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T04:47:54.0516419Z               "line": 476
2026-06-21T04:47:54.0516579Z             },
2026-06-21T04:47:54.0516669Z             {
2026-06-21T04:47:54.0516791Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T04:47:54.0516881Z               "line": 580
2026-06-21T04:47:54.0516968Z             },
2026-06-21T04:47:54.0517054Z             {
2026-06-21T04:47:54.0517167Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0517254Z               "line": 10527
2026-06-21T04:47:54.0517340Z             },
2026-06-21T04:47:54.0517420Z             {
2026-06-21T04:47:54.0517525Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0517607Z               "line": 10549
2026-06-21T04:47:54.0517692Z             }
2026-06-21T04:47:54.0517778Z           ]
2026-06-21T04:47:54.0517855Z         }
2026-06-21T04:47:54.0517945Z       }
2026-06-21T04:47:54.0518026Z     },
2026-06-21T04:47:54.0518111Z     {
2026-06-21T04:47:54.0518198Z       "id": "REQ-UPD-9",
2026-06-21T04:47:54.0520836Z       "title": "`gh_release` adapter [update] avenue (optional signing): an adapter declares `[update] avenue = \"gh_release\", repo = \"user/repo\"` (+ optional `asset`, default `adapter.spt`; + optional Ed25519 `signing_key`); spt-core's ripple compares the repo's LATEST GitHub release version against the installed adapter version and, when newer, auto-updates by fetching the release `.spt` archive (the REQ-INSTALL-9 `--release` fetch primitive) → verifies the `.spt` against `signing_key` if declared, else HTTPS+GitHub first-acquisition trust → re-extracts + re-registers the adapter root. Lets a harness adapter ship updates from its own GitHub releases with NO signing tooling or plugin coupling (removes the perri file_pull/delegated avenue blockers). Acquisition-trust mirrors `--release` + the installer first-fetch; does not alter spt-core self-update (REQ-UPD-1..8).",
2026-06-21T04:47:54.0520945Z       "requiredStages": [
2026-06-21T04:47:54.0521036Z         "doc",
2026-06-21T04:47:54.0521108Z         "impl",
2026-06-21T04:47:54.0521193Z         "unit"
2026-06-21T04:47:54.0521289Z       ],
2026-06-21T04:47:54.0521385Z       "stages": {
2026-06-21T04:47:54.0521471Z         "doc": {
2026-06-21T04:47:54.0521565Z           "complete": true,
2026-06-21T04:47:54.0521656Z           "evidence": [
2026-06-21T04:47:54.0521738Z             {
2026-06-21T04:47:54.0521842Z               "path": "CONTEXT.md",
2026-06-21T04:47:54.0521936Z               "line": 93
2026-06-21T04:47:54.0522017Z             },
2026-06-21T04:47:54.0522098Z             {
2026-06-21T04:47:54.0522201Z               "path": "docs/MANIFEST.md",
2026-06-21T04:47:54.0522291Z               "line": 285
2026-06-21T04:47:54.0522373Z             }
2026-06-21T04:47:54.0522463Z           ]
2026-06-21T04:47:54.0522549Z         },
2026-06-21T04:47:54.0522639Z         "impl": {
2026-06-21T04:47:54.0522731Z           "complete": true,
2026-06-21T04:47:54.0522817Z           "evidence": [
2026-06-21T04:47:54.0522901Z             {
2026-06-21T04:47:54.0523036Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T04:47:54.0523141Z               "line": 128
2026-06-21T04:47:54.0523216Z             },
2026-06-21T04:47:54.0523302Z             {
2026-06-21T04:47:54.0523422Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:54.0523517Z               "line": 533
2026-06-21T04:47:54.0523598Z             },
2026-06-21T04:47:54.0523802Z             {
2026-06-21T04:47:54.0523932Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:54.0524023Z               "line": 459
2026-06-21T04:47:54.0526775Z             },
2026-06-21T04:47:54.0526872Z             {
2026-06-21T04:47:54.0527013Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:54.0527114Z               "line": 505
2026-06-21T04:47:54.0527196Z             },
2026-06-21T04:47:54.0527285Z             {
2026-06-21T04:47:54.0527412Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:54.0527504Z               "line": 928
2026-06-21T04:47:54.0527718Z             },
2026-06-21T04:47:54.0527804Z             {
2026-06-21T04:47:54.0527929Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T04:47:54.0528018Z               "line": 302
2026-06-21T04:47:54.0528100Z             },
2026-06-21T04:47:54.0528181Z             {
2026-06-21T04:47:54.0528290Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0528380Z               "line": 5675
2026-06-21T04:47:54.0528468Z             },
2026-06-21T04:47:54.0528543Z             {
2026-06-21T04:47:54.0528647Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0528734Z               "line": 5720
2026-06-21T04:47:54.0528816Z             },
2026-06-21T04:47:54.0528901Z             {
2026-06-21T04:47:54.0529088Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0529178Z               "line": 5857
2026-06-21T04:47:54.0529258Z             },
2026-06-21T04:47:54.0529334Z             {
2026-06-21T04:47:54.0529436Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0529529Z               "line": 5878
2026-06-21T04:47:54.0529610Z             },
2026-06-21T04:47:54.0529696Z             {
2026-06-21T04:47:54.0529796Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0529884Z               "line": 5901
2026-06-21T04:47:54.0529965Z             },
2026-06-21T04:47:54.0530042Z             {
2026-06-21T04:47:54.0530138Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0530233Z               "line": 5928
2026-06-21T04:47:54.0530328Z             }
2026-06-21T04:47:54.0530400Z           ]
2026-06-21T04:47:54.0530485Z         },
2026-06-21T04:47:54.0530571Z         "int": {
2026-06-21T04:47:54.0530666Z           "complete": false,
2026-06-21T04:47:54.0530748Z           "evidence": []
2026-06-21T04:47:54.0530833Z         },
2026-06-21T04:47:54.0530923Z         "unit": {
2026-06-21T04:47:54.0531016Z           "complete": true,
2026-06-21T04:47:54.0531110Z           "evidence": [
2026-06-21T04:47:54.0531191Z             {
2026-06-21T04:47:54.0531330Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T04:47:54.0531406Z               "line": 259
2026-06-21T04:47:54.0531487Z             },
2026-06-21T04:47:54.0531562Z             {
2026-06-21T04:47:54.0531687Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T04:47:54.0531782Z               "line": 657
2026-06-21T04:47:54.0531863Z             },
2026-06-21T04:47:54.0531950Z             {
2026-06-21T04:47:54.0532064Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T04:47:54.0532149Z               "line": 1107
2026-06-21T04:47:54.0532236Z             },
2026-06-21T04:47:54.0532317Z             {
2026-06-21T04:47:54.0532425Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0532510Z               "line": 7565
2026-06-21T04:47:54.0532591Z             }
2026-06-21T04:47:54.0532663Z           ]
2026-06-21T04:47:54.0532752Z         }
2026-06-21T04:47:54.0532837Z       }
2026-06-21T04:47:54.0532923Z     },
2026-06-21T04:47:54.0533005Z     {
2026-06-21T04:47:54.0533100Z       "id": "REQ-WHOAMI-1",
2026-06-21T04:47:54.0534783Z       "title": "`spt whoami` is a thin ALIAS for `spt endpoint list` (full output: the SELF pin + the subnet roster) — the standalone bare-id command is dropped (the `id=$(spt whoami)` capture was never a real pattern: env vars don't persist between agent tool calls). The one new render: the `endpoint list` SELF pin carries the Self endpoint's authored `endpoint description` (info::read_info(...).resources) when present, inline after the liveness state. whoami stays a top-level hot-path verb (parse unchanged, REQ-MSG-9).",
2026-06-21T04:47:54.0534997Z       "requiredStages": [
2026-06-21T04:47:54.0535077Z         "doc",
2026-06-21T04:47:54.0535168Z         "impl",
2026-06-21T04:47:54.0535249Z         "unit"
2026-06-21T04:47:54.0535337Z       ],
2026-06-21T04:47:54.0535423Z       "stages": {
2026-06-21T04:47:54.0535509Z         "doc": {
2026-06-21T04:47:54.0535606Z           "complete": true,
2026-06-21T04:47:54.0535776Z           "evidence": [
2026-06-21T04:47:54.0535853Z             {
2026-06-21T04:47:54.0535953Z               "path": "CONTEXT.md",
2026-06-21T04:47:54.0536038Z               "line": 707
2026-06-21T04:47:54.0536120Z             }
2026-06-21T04:47:54.0536206Z           ]
2026-06-21T04:47:54.0536282Z         },
2026-06-21T04:47:54.0536371Z         "impl": {
2026-06-21T04:47:54.0536468Z           "complete": true,
2026-06-21T04:47:54.0536558Z           "evidence": [
2026-06-21T04:47:54.0536648Z             {
2026-06-21T04:47:54.0536759Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0536849Z               "line": 3190
2026-06-21T04:47:54.0536940Z             },
2026-06-21T04:47:54.0537021Z             {
2026-06-21T04:47:54.0537126Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0537215Z               "line": 3218
2026-06-21T04:47:54.0537301Z             }
2026-06-21T04:47:54.0537384Z           ]
2026-06-21T04:47:54.0537461Z         },
2026-06-21T04:47:54.0537549Z         "int": {
2026-06-21T04:47:54.0537640Z           "complete": false,
2026-06-21T04:47:54.0537732Z           "evidence": []
2026-06-21T04:47:54.0537822Z         },
2026-06-21T04:47:54.0537906Z         "unit": {
2026-06-21T04:47:54.0538001Z           "complete": true,
2026-06-21T04:47:54.0538083Z           "evidence": [
2026-06-21T04:47:54.0538170Z             {
2026-06-21T04:47:54.0538273Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0538364Z               "line": 7847
2026-06-21T04:47:54.0538441Z             },
2026-06-21T04:47:54.0538526Z             {
2026-06-21T04:47:54.0538626Z               "path": "crates/spt/src/cli.rs",
2026-06-21T04:47:54.0538704Z               "line": 7900
2026-06-21T04:47:54.0538789Z             }
2026-06-21T04:47:54.0538869Z           ]
2026-06-21T04:47:54.0539033Z         }
2026-06-21T04:47:54.0539103Z       }
2026-06-21T04:47:54.0539184Z     }
2026-06-21T04:47:54.0539270Z   ],
2026-06-21T04:47:54.0539343Z   "findings": []
2026-06-21T04:47:54.0539437Z }
